2015-08-08 66 views
2

所以這裏有在計算器上解決windowNoTitle和NavigationOnClickListener的問題相當多的職位,但這些職位不是爲我工作。我的活動應該使用工具欄而不是默認的工具欄來處理回到父活動的導航(當點擊導航圖標時)。問題是,我的主題設置和使用自定義工具欄,我似乎無法觸發導航的點擊收聽...Android的工具欄問題,程序兼容性-V7:22.2.1 NavigationOnClick和windowNoTitle

這裏是我的工具欄(我用包括佈局=「@佈局/ toolbar.xml」在我的主要佈局):

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.Toolbar 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="?attr/actionBarSize" 
    android:background="@color/material_blue" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

這是我在values.xml主題:

<style name="AppThemeBlue" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="colorPrimary">@color/material_blue</item> 
    <item name="colorPrimaryDark">@color/material_blue_dark</item> 
    <item name="colorAccent">@color/material_green</item> 
    <item name="windowActionBar">false</item> 
    <item name="windowNoTitle">true</item> 
    <item name="android:windowBackground">@color/material_blue</item> 
    <item name="android:textColor">@color/android:white</item> 
</style> 

的AndroidManifest.xml:

<activity 
     android:name=".skeleton.activities.SignupActivity" 
     android:label="@string/title_activity_signup" 
     android:parentActivityName=".skeleton.activities.StartActivity" 
     android:theme="@style/AppThemeBlue" 
     android:windowSoftInputMode="adjustResize|stateVisible|stateAlwaysHidden" > 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="com.thorrism.skeleton.activities.StartActivity" /> 
    </activity> 
從我的活動0

和代碼,使用它:

private void setupToolbar(){ 
    mToolbar = (Toolbar) findViewById(R.id.toolbar); 
    if(mToolbar != null){ 
     setSupportActionBar(mToolbar); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     mToolbar.setNavigationOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Log.e("Test", "test"); 
       finish(); 
      } 
     }); 

    } 
} 

我在競選gradle這個如下:

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    compile 'com.android.support:appcompat-v7:22.2.1' 
    compile 'com.android.support:design:22.2.1' 
} 

首先,標題是不是過去了,我已經嘗試添加android:作爲windowNoTitle的前綴,仍然不起作用。其次,即使嘗試捕獲onOptionsItemSelected()中的菜單項android.R.id.home,導航圖標也不會被觸發。

請幫助:(這不是工作在我的Galaxy S6如果改變任何東西

回答

0

工具欄不接收單擊事件的原因可能是由於它是在佈局的第一個元素,即

<RelativeLayout 
    ... 
    .../> 

    <include layout="@layout/toolbar"/> 

    <LinearLayout 
     ... 
     .../> 
</RelativeLayout> 

所以會發生什麼是LinearLayout中的頂級填充可能是繪製在工具欄上,因此,LinearLayout中接收onClick事件,而不是工具欄。爲了解決這個問題,添加工具欄的包括要在佈局中最後一個元素,那麼它將獲得的點擊。

來源:Android AppCompat Toolbar does not respond to touching action items

至於標題仍然顯示,即使與windowNoTitle,我不知道爲什麼這不起作用。一個快速的解決辦法是補充:

getSupportActionBar().setDisplayShowTitleEnabled(false); 

一個臨時解決方案,直到有人發現了什麼是錯誤的:)

相關問題