Androidのソフトキーボードの高さを取得する方法



Android How Get Height Soft Keyboard



次のコードでログによって出力されるdisplayHeightは、ウィンドウの表示領域の高さです。これは、スタイルによって設定されたwindowNoTitleがtrueであるため、この高さはsetContentViewによって設定されたレイアウトの表示される高さと同じです。 R.layout.activity_measure_soft_keyと見なすこともできます。可視の高さ。

ログのparentHeightは、ビューのルート要素の高さです。ルート要素は、子要素が1つしかないFrameLayoutです。これは、通常、onCreateメソッドで設定されるsetContentViewです。



ログのsoftKeyHeightは、ソフトキーボードの計算された高さであり、ルートビューの高さからウィンドウの表示されている高さを差し引くことによって取得されます。

対応するアクティビティファイル



public class MeasureSoftKeyActivity extends AppCompatActivity { public static String TAG = 'TranslucentActivityTAG' private ConstraintLayout constraintLayout private ViewGroup parentContent @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_measure_soft_key) constraintLayout = findViewById(R.id.constraint_layout) parentContent = findViewById(android.R.id.content) parentContent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { Rect r = new Rect() parentContent.getWindowVisibleDisplayFrame(r) int displayHeight = r.bottom - r.top Log.v(TAG, 'displayHeight:' + displayHeight) int parentHeight = parentContent.getHeight() Log.v(TAG, 'parentHeight:' + parentHeight) int softKeyHeight = parentHeight - displayHeight Log.v(TAG, 'softKeyHeight:' + softKeyHeight) } }) } }

AndroidManifest.xml

タイトルスタイルがない場合、r.bottom-r.topによって取得される高さは正確に表示される高さです。ソフトキーボードがポップアップされていない場合のandroid.R.id.contentに対応するレイアウトの高さ。

true true

タイトルスタイルを設定しない



V/TranslucentActivityTAG: displayHeight:1013 V/TranslucentActivityTAG: parentHeight:1848 V/TranslucentActivityTAG: softKeyHeight:835

レイアウト:

|_+_|

ログ: