1

私は Actionbarsherlock を使用しておりPopupWindow、アクション バーのすぐ下に配置したいと考えています。を使用するshowAtLocation()と x および y オフセットが取得されるため、理想的には y オフセットはアクション バーの高さになります。でも電話したら

int abHeight = getSupportActionBar().getHeight();

ゼロを返します。私は使用していますSherlockFragmentActivity

関連するコードは次のとおりです。

slidingLayout = inflater.inflate(R.layout.sliding_menu, null);
menuDrawer = MenuDrawer.attach(this, MenuDrawer.MENU_DRAG_CONTENT, Position.LEFT);
menuDrawer.setContentView(R.layout.activity_main);
menuDrawer.setMenuView(slidingLayout.findViewById(R.id.sliding_menu));

getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
int abHeight = getSupportActionBar().getHeight();

いろいろ調べたのですが、似たような質問/回答が見つからないので、これまでに経験したことのある人はいますか? ありがとう。

編集:ジェイクの答えは正しかった。その属性値を取得するために、この投稿を使用しました。

4

3 に答える 3

2

actionBarSizeアクションバーの高さは、テーマ属性から読み取ることができます。これはデバイス構成に基づいて変更されるため、アクティビティを作成または再作成するときは常に読んでいることを確認してください。

于 2013-03-03T23:54:19.510 に答える
2

あなたのstyle.XMLに追加: <item name="@android:attr/actionBarSize">50px</item>

次に、アクティビティに次のコードを追加します。

 TypedArray actionbarSizeTypedArray = mContext.obtainStyledAttributes(new int[] {  android.R.attr.actionBarSize});  

        int h = (int) actionbarSizeTypedArray.getDimension(0, 0);  

これは 1 つの種類です。私は他の方法を取得しようとしています。頑張ってください!

ええ!私は非常に簡単な方法を見つけます:

    TypedValue tv = new TypedValue();
    if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true))
    {
        int  h=TypedValue.complexToDimensionPixelSize(tv.data,getResources().getDisplayMetrics());
    }

詳細については、このリンクを見てください

于 2013-08-28T07:51:53.457 に答える
0

ビューがレイアウトされるまで、ビューの高さを取得することはできません。を追加してみてくださいViewTreeObserver

someView.getViewTreeObserver().addGlobalLayoutListener(new OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        // Remember to remove it if you don't want it to fire every time
        someView.getViewTreeObserver().removeGlobalOnLayoutListener(this);

        int abHeight = getSupportActionBar().getHeight();
        // Use the height as desired...
    }
});

で始まるドキュメントを参照してくださいView.getViewTreeObserver()

于 2013-03-03T23:37:15.170 に答える