オーバーレイを使用して、アクション バーの下にビューを配置したいと思います。XMLレイアウトを介してこれを行う方法はありますか?
少なくとも4 つの可能な値が既にあり、その数が増える可能性があるため、定数の使用は避けたいと思います。
ActionBarSherlockとの互換性はプラスです。
オーバーレイを使用して、アクション バーの下にビューを配置したいと思います。XMLレイアウトを介してこれを行う方法はありますか?
少なくとも4 つの可能な値が既にあり、その数が増える可能性があるため、定数の使用は避けたいと思います。
ActionBarSherlockとの互換性はプラスです。
android:layout_marginTop="?attr/actionBarSize"
これにより、画面構成に基づくサイズの変更が自動的に考慮されます。ActionBarSherlockに付属する「Demos」サンプルの「Overlay」の例で、その使用のデモを見ることができます。
構成の変更を処理している場合、 Jake Wharton の回答は機能しません。
これは、誰かに役立つ場合に備えて、この問題をコードで解決した方法です。
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
layoutTheView();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
layoutTheView();
}
private void layoutTheView() {
ActionBar actionBar = this.getSupportActionBar();
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mTheView.getLayoutParams();
int actionBarHeight = actionBar.getHeight();
params.setMargins(0, actionBarHeight, 0, 0);
mTheView.setLayoutParams(params);
mTheView.requestLayout();
}