2015-05-29 63 views
3

一些背景:我爲以前在手機上長時間使用的遊戲添加了平板電腦支持。一些活動組成了一個「嚮導」,用戶在遊戲開始前可以選擇遊戲類型,某些選項和對手。對於使用繼承Theme.AppCompat.DialogWhenLarge主題的平板電腦版本,這些活動看起來像是一個很好的簡單解決方案。這在使用appcompat-v7版本22.0.0時工作得很好。如何獲取作爲與appcompat-v7 22.1對話的風格的活動欄?

在程序兼容性-V7版本22.1,在所有這些DialogWhenLarge活動,突然getSupportActionBar()開始在平板電腦上返回null。我依靠後臺導航的操作欄,更重要的是搜索和其他按鈕。

什麼是在平板電腦上獲得這些活動的操作欄的適當方式?我是否需要實現自己的工具欄?

我試過在我的onCreate(在打電話給super之前)撥打過requestWindowFeature(Window.FEATURE_ACTION_BAR),但沒有任何效果。我嘗試從AppCompatActivity而不是ActionBarActivity繼承,但這並沒有幫助(無論有沒有requestWindowFeature)。

我已閱讀Chris Banes' blog post關於此新圖書館版本以及Android Developers博客上的Ian Lake's post;我看不到任何提及行動條不再可用的事情。

回答

4

我有同樣的問題。我可以找到修復它的唯一方法是用工具欄替換動作條。

// Replace the action bar with a toolbar 
Toolbar toolbar = (Toolbar)findViewById(R.id.tool_bar); 
setSupportActionBar(toolbar); 

我的工具欄佈局:

<android.support.v7.widget.Toolbar 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:minHeight="?attr/actionBarSize" 
    android:theme="@style/DefaultActionBarTheme" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

包含在我的活動:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/detail_root" 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

    <include android:id="@+id/tool_bar" layout="@layout/tool_bar" /> 

    <ListView 
     android:id="@+id/detail_listview" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:overScrollMode="always" /> 
</LinearLayout> 

DefaultActionBarTheme(在styles.xml):

<!-- Action bar theme --> 
<style name="DefaultActionBarTheme" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 
    <item name="colorControlNormal">#1d7caf</item> 
</style> 
+0

感謝@Henri。我嘗試了這一點,並且它導致活動的菜單被包含在工具欄中,所以這是一個好的開始,但是在自定義工具欄上方的對話框頂部仍然有一個標題欄。你沒有這個問題嗎? –

+0

我在DialogWhenLarge派生的主題中用''' true''解決了最後一個問題。 –

+0

是的,我有同樣的問題。您的解決方案與我使用的解決方案相同。我追溯了父主題和' true'在Platform.AppCompat.Light中設置了,但它似乎只能使用* windowNoTitle *而沒有* android:* AppCompat主題使其正常工作。 –

相關問題