2013年10月19日土曜日

ActionBar のタブの高さは 48dp 以上にできない

ActionBar のサイズは 48dp 以上にできるのになー。。。

ActionBar のタブは ScrollingTabContainerView です。
このコンストラクタで setContentHeight() を呼んで高さを設定しています。
高さには ActionBarPolicy の getTabContainerHeight() の値を指定しています。

http://tools.oesf.biz/android-4.2.0_r1.0/xref/frameworks/base/core/java/com/android/internal/widget/ScrollingTabContainerView.java#71 71 public ScrollingTabContainerView(Context context) { 72 super(context); 73 setHorizontalScrollBarEnabled(false); 74 75 ActionBarPolicy abp = ActionBarPolicy.get(context); 76 setContentHeight(abp.getTabContainerHeight()); 77 mStackedTabMaxWidth = abp.getStackedTabMaxWidth(); 78 79 mTabLayout = createTabLayout(); 80 addView(mTabLayout, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, 81 ViewGroup.LayoutParams.MATCH_PARENT)); 82 } 83 ActionBarPolicy の getTabContainerHeight() では、android:actionBarStyle の android:height と R.dimen.action_bar_stacked_max_height の最小値を返しています。
つまり、タブの高さは R.dimen.action_bar_stacked_max_height より大きくならないということです。

http://tools.oesf.biz/android-4.2.0_r1.0/xref/frameworks/base/core/java/com/android/internal/view/ActionBarPolicy.java#65 65 public int getTabContainerHeight() { 66 TypedArray a = mContext.obtainStyledAttributes(null, R.styleable.ActionBar, 67 com.android.internal.R.attr.actionBarStyle, 0); 68 int height = a.getLayoutDimension(R.styleable.ActionBar_height, 0); 69 Resources r = mContext.getResources(); 70 if (!hasEmbeddedTabs()) { 71 // Stacked tabs; limit the height 72 height = Math.min(height, 73 r.getDimensionPixelSize(R.dimen.action_bar_stacked_max_height)); 74 } 75 a.recycle(); 76 return height; 77 } R.dimen.action_bar_stacked_max_height は 48dp なので、これより大きくできません。

http://tools.oesf.biz/android-4.2.0_r1.0/xref/frameworks/base/core/res/res/values/dimens.xml#229 229 <!-- Maximum height for a stacked tab bar as part of an action bar --> 230 <dimen name="action_bar_stacked_max_height">48dp</dimen>


0 件のコメント:

コメントを投稿