2015-08-21 93 views
1

我試圖實現我的設計師爲我設計的設計。選項卡之間的間距TabPageIndicator

我無法將compoundDrawable移近文本(設置padding屬性可以將它移動很遠,但即使0dp也不會使其關閉),並且我無法使製表符間的間距爲固定寬度。

Tabs design

這是我得到什麼(不看字體,文本顏色,強調規模,目前正在開發中):

enter image description here

但我已經對定製傑克的滿足煩惱沃頓library

這裏幾乎是同樣的問題:Space between elements of the indicator

<style name="SkillsPageIndicator" parent="Widget.TabPageIndicator"> 
     <item name="android:background">@drawable/tab_underline_indicator</item> 
     <item name="android:textSize">@dimen/text_size_medium</item> 
     <item name="android:paddingTop">35dp</item> 
     <item name="android:paddingBottom">16dp</item> 
     <item name="android:drawablePadding">0dp</item> 
     <item name="android:gravity">center</item> 
     <item name="android:width">100dp</item> 
</style> 

回答

1

我已經做得不那麼幹淨的代碼,但它適用於我。我在這裏分享它來幫助任何人,誰需要它:

done image

更改密碼在TabPageIndicator.addTab:

private void addTab(int index, CharSequence text, int iconResId) { 
     final TabView tabView = new TabView(getContext()); 
     tabView.mIndex = index; 
     tabView.setFocusable(true); 
     tabView.setOnClickListener(mTabClickListener); 
     tabView.setText(text); 

     /** 
     * My parts (CullyCross): 
     */ 

     Resources r = getResources(); 
     DisplayMetrics metrics = r.getDisplayMetrics(); 
     float screenWidth = metrics.widthPixels; 

     float width = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 100, metrics); 
     int margin = (int)(screenWidth - 2 * width)/4; 

     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams((int)width, MATCH_PARENT); 
     params.setMargins(margin, 0, margin, 0); 


     /***********************/ 

     if (iconResId != 0) { 
      tabView.setCompoundDrawablesWithIntrinsicBounds(iconResId, 0, 0, 0); 
     } 

     /** 
     * original 
     * mTabLayout.addView(tabView, new LinearLayout.LayoutParams(0, MATCH_PARENT, 1)); 
     */ 

     mTabLayout.addView(tabView, params); 
    } 

隨着thiner字體看起來會更好。

相關問題