19

オーバーレイを使用して、アクション バーの下にビューを配置したいと思います。XMLレイアウトを介してこれを行う方法はありますか?

少なくとも4 つの可能な値が既にあり、その数が増える可能性があるため、定数の使用は避けたいと思います。

ActionBarSherlockとの互換性はプラスです。

4

3 に答える 3

46

android:layout_marginTop="?attr/actionBarSize"

これにより、画面構成に基づくサイズの変更が自動的に考慮されます。ActionBarSherlockに付属する「Demos」サンプルの「Overlay」の例で、その使用のデモを見ることができます。

于 2012-07-10T18:39:06.567 に答える
7

構成の変更を処理している場合、 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();
}
于 2012-07-10T18:43:08.143 に答える