最終讓每個CustomView完全包裝Tab父項後,我遇到了一個問題,其中的選項卡太長,並將操作欄變成滑塊。我的drawables的寬度爲150px,這應該很好,因爲我測試了三星Galaxy S2屏幕的px寬度,並獲得了480px(480/3標籤= 160px每個)。操作欄選項卡自定義視圖太長
截圖:
設置:每個選項卡是由具有附着在佈局不同drawawble資源相同RelativeLayout的設置。該佈局然後傳遞給Tab的setCustomView()。我不認爲每個Tab都需要ImageView,除非這樣可以解決我的問題。某些樣式配置更改(例如刪除TabView的左側和右側填充)已經完成,以便將自定義視圖放在Tab上。
代碼(不使用的ImageView,設置在RelativeLayout的繪製資源)
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="56dp"
android:layout_margin="0dp"
android:paddingBottom="2dp" >
<!-- <ImageView
android:id="@+id/ivCustomTab"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="2dp"
android:contentDescription="@string/tabsDescription"
android:duplicateParentState="true" /> -->
</RelativeLayout>
//setting up tabs + custom views on tabs
LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
RelativeLayout discoverTabLayout = (RelativeLayout) inflater.inflate(R.layout.actionbar_tabs, null);
RelativeLayout tagsTabLayout = (RelativeLayout) inflater.inflate(R.layout.actionbar_tabs, null);
RelativeLayout badgeTabLayout = (RelativeLayout) inflater.inflate(R.layout.actionbar_tabs, null);
//ImageView customTabImg = (ImageView) customTabLayout.findViewById(R.id.ivCustomTab); //re-setting this ImageView for each tab
ActionBar.Tab discoverTab = actionBar.newTab();//.setText("Discover").setIcon(R.drawable.selector_tabicon_discover);//.setCustomView(drawable.selector_tab_discover);
//customTabImg.setImageResource(R.drawable.selector_tab_discover);
discoverTabLayout.setBackgroundResource(R.drawable.selector_tab_discover);
discoverTab.setCustomView(discoverTabLayout);
<!-- Application theme. -->
<style name="Theme.AppTheme" parent="AppBaseTheme">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
<item name="android:textSize">18sp</item>
<item name="actionBarTabStyle">@style/Theme.TabsNoPadding</item>
<item name="android:actionBarTabStyle">@style/Theme.TabsNoPadding</item>
</style>
<style name="Theme.TabsNoPadding" parent="@style/Widget.Sherlock.ActionBar.TabView">
<item name="android:paddingLeft">0dp</item>
<item name="android:paddingRight">0dp</item>
<item name="android:minWidth">0dp</item>
</style>
我已經試過什麼:
- 添加的android:layout_width = 「120dp」 到RelativeLayout的縮短了標籤,但寬度保持不變。
- 重新調整圖像大小,並減少45px的總長度,無需更改。如果我將它們設置得太小,它們將不會覆蓋標籤主機。
- 我也注意到,標籤customView(s)大部分時間都消失onCreate()。不知道這是否與我不想要的標籤滾動佈局的渲染有關。
如果需要,我可以發佈我的主活動代碼。
你能發表你的xml嗎? – TheFlash
@Pratik發佈。有什麼建議麼? –