Huy*_* Tu 457 android android-actionbar android-actionbar-compat android-toolbar
我正在从我的应用程序迁移ActionBar
到Toolbar
.但我不知道如何在Back Arrow上显示和设置click事件Toolbar
就像我一样Actionbar
.
有ActionBar
,我打电话mActionbar.setDisplayHomeAsUpEnabled(true)
.但是没有像这样的类似方法.
有没有人遇到这种情况,并以某种方式找到了解决它的方法?
MrE*_*r13 835
如果您使用的是ActionBarActivity
,你可以告诉Android的使用Toolbar
作为ActionBar
像这样:
Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
setSupportActionBar(toolbar);
Run Code Online (Sandbox Code Playgroud)
然后打电话给
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
Run Code Online (Sandbox Code Playgroud)
将工作.您也可以在附加到ActionBarActivities
您的片段中使用它可以像这样使用它:
((ActionBarActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
((ActionBarActivity) getActivity()).getSupportActionBar().setDisplayShowHomeEnabled(true);
Run Code Online (Sandbox Code Playgroud)
如果您没有使用ActionBarActivities
或者如果您想要将后箭头Toolbar
设置为未设置为您的后箭头,SupportActionBar
则可以使用以下内容:
mActionBar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_action_back));
mActionBar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//What to do on back clicked
}
});
Run Code Online (Sandbox Code Playgroud)
如果您正在使用android.support.v7.widget.Toolbar
,那么您应该将以下代码添加到您的AppCompatActivity
:
@Override
public boolean onSupportNavigateUp() {
onBackPressed();
return true;
}
Run Code Online (Sandbox Code Playgroud)
Vas*_*hev 202
我看到很多答案,但这里是我以前没有提到的.它适用于API 8+.
public class DetailActivity extends AppCompatActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
// toolbar
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
// add back arrow to toolbar
if (getSupportActionBar() != null){
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// handle arrow click here
if (item.getItemId() == android.R.id.home) {
finish(); // close this activity and return to preview activity (if there is any)
}
return super.onOptionsItemSelected(item);
}
Run Code Online (Sandbox Code Playgroud)
Igo*_*lov 157
有很多方法可以实现这一点,这是我的最爱:
布局:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:navigationIcon="?attr/homeAsUpIndicator" />
Run Code Online (Sandbox Code Playgroud)
活动:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// back button pressed
}
});
Run Code Online (Sandbox Code Playgroud)
Sam*_*Sam 73
您可以使用工具栏setNavigationIcon方法. Android Doc
mToolBar.setNavigationIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha);
mToolBar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleOnBackPress();
}
});
Run Code Online (Sandbox Code Playgroud)
Pha*_*inh 20
如果您不想创建自定义Toolbar
,可以这样做
public class GalleryActivity extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
...
getSupportActionBar().setTitle("Select Image");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
}
return super.onOptionsItemSelected(item);
}
}
Run Code Online (Sandbox Code Playgroud)
在你身上 AndroidManifest.xml
<activity
android:name=".GalleryActivity"
android:theme="@style/Theme.AppCompat.Light">
</activity>
Run Code Online (Sandbox Code Playgroud)
你也可以把这个android:theme="@style/Theme.AppCompat.Light"
来<aplication>
标记,适用于所有活动
Ily*_*man 18
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setNavigationIcon(R.drawable.back_arrow); // your drawable
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed(); // Implemented by activity
}
});
Run Code Online (Sandbox Code Playgroud)
对于API 21+ android:navigationIcon
<android.support.v7.widget.Toolbar
android:navigationIcon="@drawable/back_arrow"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"/>
Run Code Online (Sandbox Code Playgroud)
Pao*_*eri 16
我在Google Developer Documentation中使用了这种方法:
@Override
public void onCreate(Bundle savedInstanceState) {
...
getActionBar().setDisplayHomeAsUpEnabled(true);
}
Run Code Online (Sandbox Code Playgroud)
如果你得到一个空指针异常,它可能取决于主题.尝试在清单中使用不同的主题或者使用此选项:
@Override
public void onCreate(Bundle savedInstanceState) {
...
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
Run Code Online (Sandbox Code Playgroud)
然后在清单中,我为当前活动设置父活动:
<activity
android:name="com.example.myapp.MyCurrentActivity"
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.myapp.MyMainActivity" />
</activity>
Run Code Online (Sandbox Code Playgroud)
我希望这能帮到您!
Dhi*_*pta 13
如果您正在使用AppCompatActivity
并且已经走上了不使用它的道路,因为您不想获得ActionBar
它提供的自动化,因为您想要分离出Toolbar
,因为您的Material Design需求和CoordinatorLayout
或者AppBarLayout
,请考虑以下因素:
你仍然可以使用它AppCompatActivity
,你不需要停止使用它,这样你就可以<android.support.v7.widget.Toolbar>
在你的xml中使用它.只需关闭操作栏样式,如下所示:
首先,从你喜欢的NoActionBar主题之一派生一个样式styles.xml
,我这样使用Theme.AppCompat.Light.NoActionBar
:
<style name="SuperCoolAppBarActivity" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/primary</item>
<!-- colorPrimaryDark is used for the status bar -->
<item name="colorPrimaryDark">@color/primary_dark</item>
...
...
</style>
Run Code Online (Sandbox Code Playgroud)
在App的清单中,选择刚刚定义的子样式主题,如下所示:
<activity
android:name=".activity.YourSuperCoolActivity"
android:label="@string/super_cool"
android:theme="@style/SuperCoolAppBarActivity">
</activity>
Run Code Online (Sandbox Code Playgroud)
在Activity Xml中,如果工具栏的定义如下:
...
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
/>
...
Run Code Online (Sandbox Code Playgroud)
然后,这是重要的部分,您将支持操作栏设置为您正在扩展的AppCompatActivity,以便xml中的工具栏成为操作栏.我觉得这是一种更好的方法,因为你可以简单地做ActionBar允许的许多事情,比如菜单,自动活动标题,项目选择处理等,而不需要添加自定义点击处理程序等.
在Activity的onCreate覆盖中,执行以下操作:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_super_cool);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
//Your toolbar is now an action bar and you can use it like you always do, for example:
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
Run Code Online (Sandbox Code Playgroud)
Gab*_*tti 13
如果您使用的是androidx.appcompat.app.AppCompatActivity
just use:
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud)
然后只需在Manifest.xml
父Activity中定义即可。
<activity
android:name=".MyActivity"
...>
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".ParentActivity" />
</activity>
Run Code Online (Sandbox Code Playgroud)
相反,如果您正在使用 aToolbar
并且您想要自定义行为,请使用:
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
app:navigationIcon="?attr/homeAsUpIndicator"
.../>
Run Code Online (Sandbox Code Playgroud)
并在您的活动中:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//....
}
});
Run Code Online (Sandbox Code Playgroud)
MyActivity extends AppCompatActivity {
private Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
...
toolbar = (Toolbar) findViewById(R.id.my_toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
toolbar.setNavigationOnClickListener(arrow -> onBackPressed());
}
Run Code Online (Sandbox Code Playgroud)
小智 7
显示工具栏上的后退按钮的简便方法
将此代码粘贴到onCreate方法中
if (getSupportActionBar() != null){
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
}
Run Code Online (Sandbox Code Playgroud)
将此替代方法粘贴到onCreate方法之外
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getItemId()== android.R.id.home) {
finish();
}
return super.onOptionsItemSelected(item);
}
Run Code Online (Sandbox Code Playgroud)
首先,您需要初始化工具栏:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Run Code Online (Sandbox Code Playgroud)
然后从操作栏中调用后退按钮:
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
@Override
public boolean onSupportNavigateUp() {
onBackPressed();
return true;
}
Run Code Online (Sandbox Code Playgroud)
在AppCompatActivity
比如你可以这样做
public class GrandStatActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_grand_stat);
}
@Override
public void onResume() {
super.onResume();
// Display custom title
ActionBar actionBar = this.getSupportActionBar();
actionBar.setTitle(R.string.fragment_title_grandstats);
// Display the back arrow
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
}
// Back arrow click event to go to the parent Activity
@Override
public boolean onSupportNavigateUp() {
onBackPressed();
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
Easily you can do it.
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
@Override
public boolean onSupportNavigateUp() {
onBackPressed();
return true;
}
Run Code Online (Sandbox Code Playgroud)
积分:https : //freakycoder.com/android-notes-24-how-to-add-back-button-at-toolbar-941e6577418e
private fun setupToolbar(){
toolbar.title = getString(R.string.YOUR_TITLE)
setSupportActionBar(toolbar)
supportActionBar?.setDisplayHomeAsUpEnabled(true)
supportActionBar?.setDisplayShowHomeEnabled(true)
}
// don't forget click listener for back button
override fun onSupportNavigateUp(): Boolean {
onBackPressed()
return true
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
414064 次 |
最近记录: |