2016-08-27 90 views
-1

在我的工具欄上使用自定義後退箭頭後,它不會像我按下時那樣回退。這個問題怎麼解決?工具欄中的自定義後退箭頭不工作

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    final String actionBarColor = "#FFD300"; 

    ActionBar actionBar = getSupportActionBar(); 
    if(actionBar != null) { 
     actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor(actionBarColor))); 
     actionBar.setElevation(0); 

     Toolbar tBar = (Toolbar) findViewById(R.id.toolbar_yellow); 
     setSupportActionBar(tBar); 

     tBar.setNavigationOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       onBackPressed(); 
      } 
     }); 
    } 
} 

toolbar_yellow.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" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/toolbar_yellow" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:minHeight="?attr/actionBarSize" 
    android:background="#FFD300" 
    android:theme="@style/ThemeOverlay.AppCompat.ActionBar" 
    app:navigationIcon="@drawable/ic_action_navigation_arrow_back"> 

    <TextView 
     android:id="@+id/toolbar_text" 
     android:text="yellow" 
     android:textColor="#000099" 
     android:textSize="@dimen/abc_text_size_title_material_toolbar" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:singleLine="false" 
     android:maxLines="2"/> 

</android.support.v7.widget.Toolbar> 
+0

你的代碼中的customarrown後退按鈕在哪裏? –

+0

@MacaronLover只是結賬我更新的答案我添加到代碼。 – Ironman

+0

我發表了一個答案,你可以看看它 –

回答

0

我認爲你缺少這一行

getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
getSupportActionBar().setDisplayShowHomeEnabled(true); 

更新:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    final String actionBarColor = "#FFD300"; 

    ActionBar actionBar = getSupportActionBar(); 
    if(actionBar != null) { 
     actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor(actionBarColor))); 
     actionBar.setElevation(0); 

     Toolbar tBar = (Toolbar) findViewById(R.id.toolbar_yellow); 
     setSupportActionBar(tBar); 

     getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_navigation_arrow_back); 

     tBar.setNavigationOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       onBackPressed(); 
      } 
     }); 
    } 
} 
+0

我相信這肯定會顯示「向上」(它實際上並不稱爲「後退」箭頭)。 – Subby

+0

這仍然沒有區別我使用後退箭頭而不是android之一的自定義繪製。 – MacaronLover

+0

@MacaronLover再次看到我的更新回答。 – Ironman

-1

如果你沒有任何自定義返回按鈕,甚至你可以通過設置線的manifest.xml

<activity 
      android:name="com.example.myfirstapp.DisplayMessageActivity" 
      android:label="@string/title_activity_display_message" 
      android:parentActivityName="com.example.myfirstapp.MainActivity" > 
      <!-- Parent activity meta-data to support 4.0 and lower --> 
      <meta-data 
       android:name="android.support.PARENT_ACTIVITY" 
       android:value="com.example.myfirstapp.MainActivity" /> 
     </activity> 

顯示自定義圖標

actionBar.setIcon(R.drawable.app_icon); 

和處理它作爲

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case android.R.id.home: 
     finish(); 
     return true; 
    default: 
     return super.onOptionsItemSelected(item); 
    } 
} 
+0

我知道,但我有一個自定義的! – MacaronLover

+0

更新了我的答案 –

0

顯示它我簡化你的代碼下面是什麼。由於您在toolbar_yellow.xml佈局文件中設置Toolbar顏色,因此無需將其設置爲代碼。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Toolbar tBar = (Toolbar) findViewById(R.id.toolbar_yellow); 

    setSupportActionBar(tBar); 
    tBar.setNavigationOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      onBackPressed(); 
     } 
    }); 

} 

讓我知道這是否有幫助。

相關問題