2013-10-08 20 views
16

我試過在這裏提到的所有Stackoverflow的其他答案,但它沒有解決。這是我的代碼。選項卡上面的動作欄當充氣自定義佈局

actionBar = getActionBar(); 
actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#ffffff"))); 
actionBar.setDisplayShowHomeEnabled(true); 
actionBar.setDisplayShowCustomEnabled(true); 
actionBar.setCustomView(R.layout.actionbar_layout); 
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
actionBar.setLogo(null); 
actionBar.setDisplayShowTitleEnabled(false); 
View homeIcon = findViewById(android.R.id.home); 
((View) homeIcon.getParent()).setVisibility(View.GONE); 
+0

你的意思是你想用你的自定義佈局的行動吧? –

+0

是的,這是正確的。 – Mihir

+0

我敢打賭,你也試過這個(http://stackoverflow.com/a/12884297/2438460)呢? –

回答

38

當您隱藏Home項目時,標籤顯示在最上面。這有點反直覺,但它也使一些設計感。他們基本上推動你使用標籤作爲標題的部分,並使用它們下面的操作欄來處理這些部分內的操作。

您需要setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME)才能再次將選項卡拉下。它可能會需要一個非空的標誌太(你可以做一個1px的透明之一-nodpi讓它消失)

+1

你是男人。 – Mihir

+3

我試過了很多解決方案,這是第一個可行的解決方案! – abc32112

+3

我有一個問題..我不能隱藏應用程序圖標,它顯示在我的actionBar – vezikon

1

請嘗試使用LayoutInflater來誇大視圖,然後將視圖設置爲操作欄。

LayoutInflater inflator = (LayoutInflater) this 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View v = inflator.inflate(R.layout.layout, null); 
    actionBar.setCustomView(v); 

而且從this

使用RelativeLayout的,而不是作爲LinearLayout中的主容器。這是 重要的是要爲它設置android:layout_gravity =「fill_horizo​​ntal」。 這應該做到這一點。

+0

仍然無法工作,我做了你說的一切。 – Mihir

+0

感謝您的嘗試。 – Mihir

2
getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME); 
     getActionBar().setDisplayUseLogoEnabled(true); 
     getActionBar().setDisplayShowCustomEnabled(true); 
     getActionBar().setCustomView(R.layout.actionbar_layout); 

這爲我工作。

+0

我寧願使用android:displayOptions樣式 – martyglaubitz

4

使用接受的解決方案在actionbar上留下了一個左填充,這會縮小您的自定義視圖。

的解決方案是在ActivityonCreate添加以下代碼:

 View homeIcon = findViewById(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ? android.R.id.home : R.id.abs__home); 
     ((View) homeIcon.getParent()).setLayoutParams(new LinearLayout.LayoutParams(0, 0)); 
     ((View) homeIcon).setVisibility(View.GONE); 
+0

謝謝!它的工作,也刪除了左邊的額外填充... – dhun

相關問題