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
  1. 71     public ScrollingTabContainerView(Context context) {  
  2. 72         super(context);  
  3. 73         setHorizontalScrollBarEnabled(false);  
  4. 74   
  5. 75         ActionBarPolicy abp = ActionBarPolicy.get(context);  
  6. 76         setContentHeight(abp.getTabContainerHeight());  
  7. 77         mStackedTabMaxWidth = abp.getStackedTabMaxWidth();  
  8. 78   
  9. 79         mTabLayout = createTabLayout();  
  10. 80         addView(mTabLayout, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,  
  11. 81                 ViewGroup.LayoutParams.MATCH_PARENT));  
  12. 82     }  
  13. 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
  1. 65     public int getTabContainerHeight() {  
  2. 66         TypedArray a = mContext.obtainStyledAttributes(null, R.styleable.ActionBar,  
  3. 67                 com.android.internal.R.attr.actionBarStyle, 0);  
  4. 68         int height = a.getLayoutDimension(R.styleable.ActionBar_height, 0);  
  5. 69         Resources r = mContext.getResources();  
  6. 70         if (!hasEmbeddedTabs()) {  
  7. 71             // Stacked tabs; limit the height  
  8. 72             height = Math.min(height,  
  9. 73                     r.getDimensionPixelSize(R.dimen.action_bar_stacked_max_height));  
  10. 74         }  
  11. 75         a.recycle();  
  12. 76         return height;  
  13. 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
  1. 229     <!-- Maximum height for a stacked tab bar as part of an action bar -->  
  2. 230     <dimen name="action_bar_stacked_max_height">48dp</dimen>  



0 件のコメント:

コメントを投稿