2016-08-27 61 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(); 
     } 
    }); 

} 

让我知道这是否有帮助。

相关问题