2016-08-27 7 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

ここで、あなたのコードのカスタムの「戻る」ボタンはどこですか? –

+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

これは確かに 'Up'(実際には' Back'矢印とは呼ばれません)を表示します。 – Subby

+0

それでもまだ違いはありません。アンドロイドではなく、バック矢印にカスタムドロアブルを使っています。 – MacaronLover

+0

@MacaronLover私の更新の回答をもう一度見てください。 – Ironman

-1

戻るボタンは、も、あなたは私はあなたのコードを簡素化するカスタムアイコン

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

としてそれを扱うを表示するための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> 

にラインを設定することにより、それを表示することができます以下は何ですか? 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(); 
     } 
    }); 

} 

これが役立つかどうか教えてください。

関連する問題