Java 工具栏中的自定义后退箭头不工作
使用工具栏上的自定义后退箭头后,当我按下它时,它不会返回到应有的位置。如何解决这个问题Java 工具栏中的自定义后退箭头不工作,java,android,xml,android-support-library,android-toolbar,Java,Android,Xml,Android Support Library,Android Toolbar,使用工具栏上的自定义后退箭头后,当我按下它时,它不会返回到应有的位置。如何解决这个问题 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final String actionBarColor = "#FFD300"; ActionBa
@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();
}
});
}
}
工具栏_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>
我想你漏掉了这一行
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();
}
});
}
}
如果没有任何自定义的后退按钮,甚至可以通过在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>
并将其作为
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
我将您的代码简化为以下内容。由于要在
Toolbar\u yellow.xml
布局文件中设置工具栏
颜色,因此不需要在代码中进行设置
@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();
}
});
}
让我知道这是否有帮助。我相信这肯定会显示
向上
(实际上它不是向后
箭头)。这仍然没有什么区别,我使用的是一个可自定义绘制的后退箭头,而不是android的。@MacaronLover再次查看我的更新答案。customarrown后退按钮在您的代码中哪里?@MacaronLover刚刚签出我添加到代码中的更新答案。我发布了一个答案,您可以查看它。您的逻辑似乎有点不正确。如果actionBar!=null,则setSupportActionBar()
应引发异常。您确定它正在输入if
块吗?你需要一个NoActionBar
主题,或者类似的主题,用于你的活动
@MacaronLover,我很好奇为什么你的工具栏中有一个文本视图
。如果要设置工具栏
标题,您可以在活动中使用setTitle(int)
或setTitle(CharSequence)
方法,而无需使用TextView
。我知道,但我有一个自定义方法!
@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();
}
});
}