2

アクションバーに別のレイアウトを使用しており、要件に合った別のアイテムを追加しています。そして、このようにJavaクラスで呼び出します

ActionBar actionBar = getActionBar();
actionBar.setCustomView(R.layout.actionbar);
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
actionBar.setDisplayShowHomeEnabled(false);

2 つまたは 3 つの異なるデバイスには問題ないように見えますが、nexus7 タブレットと xhdpi には互換性がないようです。その割にアクションバーの高さが低く、空きスペースができてしまいます。どうすればいいですか?私は使っている

     android:layout_width="match_parent"
     android:layout_height="48dp"

アクションバーレイアウトで。私も使用しました

           android:layout_height="wrap_content" 

しかし、それはまったく機能しません。修正方法がわかりません。助けてください。

4

2 に答える 2

0

リソースではなく、ソースでアクション バーの高さを設定できます。

必要なのは、アクションバーの高さを計算することだけです:

TypedValue tv = new TypedValue();
if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true))
{
    actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data,getResources().getDisplayMetrics());
}
于 2013-09-26T05:50:09.013 に答える
0
ActionBar bar = getSupportActionBar();
Display d = getWindowManager().getDefaultDisplay();
DisplayMetrics dm = new DisplayMetrics();
d.getMetrics(dm);
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams)myCustomView.getLayoutParams();
final int ACTION_BAR_HEIGHT = dm.heightPixels/10; // 1/10 from screen height
lp.height = ACTION_BAR_HEIGHT;
myCustomView.setLayoutParams(lp);
bar.setCustomView(myCustomView);
于 2013-09-26T05:56:40.990 に答える