我正在尝试使用工具栏而不是ActionBar,但我无法弄清楚如何添加向上按钮以返回上一个活动。 我找不到任何与之相关的方法。
如何添加向上按钮?
答案 0 :(得分:24)
我猜你要找的是这样的:
Toolbar toolbar = (Toolbar) findViewById(R.id.app_bar_detail);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
或者在Fragment中使用的情况下:
Toolbar toolbar = (Toolbar) view.findViewById(R.id.app_bar_detail);
((ActionBarActivity) getActivity()).setSupportActionBar(toolbar);
((ActionBarActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
这将在您的工具栏中显示您的操作栏,但不要担心一切都会很好地融合在一起。如果你不想在你的操作栏或任何背景下有任何阴影,最后你需要做的就是在vaules / styles.xml中改变你的主题。
<style name="AppThmeme.Base" parent="Theme.AppCompat.NoActionBar">
答案 1 :(得分:7)
如果您想在XML中执行此操作,可以使用...
String parentWindowHandler = driver.getWindowHandle(); // Store your parent window
String subWindowHandler = null;
Set<String> handles = driver.getWindowHandles(); // get all window handles
Iterator<String> iterator = handles.iterator();
while (iterator.hasNext()){
subWindowHandler = iterator.next();
}
driver.switchTo().window(subWindowHandler);
*****perform operations on child window******************
driver.switchTo().window(parentWindowHandler);
答案 2 :(得分:1)
只要您已调用getSupportActionBar().setHomeButtonEnabled(true);
setSupportActionBar(toolbar);
仍然可以正常工作
答案 3 :(得分:1)
如果您想知道为什么单击向上按钮不适用于片段,则还需要设置导航侦听器,不确定为什么Google默认情况下未启用它:
protected fun setupToolbar(toolbar: Toolbar) {
(activity as AppCompatActivity).run {
setSupportActionBar(toolbar)
supportActionBar?.setDisplayHomeAsUpEnabled(true)
toolbar.setNavigationOnClickListener { onBackPressed() }
}
}
答案 4 :(得分:0)
您可以在工具栏中添加自己的“向上”按钮,毕竟它只是一个ViewGroup。
您可以根据需要自定义工具栏,在toolbar.xml中,或者在布局中定义android.support.v7.widget.Toolbar的位置添加“up”按钮,如下所示:
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:minHeight="?attr/actionBarSize"
android:layout_height="?attr/actionBarSize"
android:background="@drawable/color_toolbar"
android:layout_width="match_parent">
<ImageButton
android:id="@+id/upButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="uphandler"
android:src="@drawable/backbutton"
android:layout_gravity="end"/>
</android.support.v7.widget.Toolbar>
现在,在您的活动中定义uphandler函数以收听此向上按钮:
public void uphandler(View v){
this.finish(); // This will kill current activity, and if previous activity is still opened in background, it will come in front.
}
答案 5 :(得分:0)
如果活动的先前活动始终相同,则可以借助parentActivityName
属性轻松地实现上/后按钮。可以在AndroidManifest.xml
文件中提及,如下所示。假设DetailActivity
是从MainActivity
打开的。因此,当您使用DetailActivity
时,工具栏将自动显示向左箭头。当我们单击左箭头时,将显示MainActivity
。
<activity android:name=".DetailActivity"
android:parentActivityName=".MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
</activity>
答案 6 :(得分:0)
如果您使用导航组件,那么在片段中添加按钮将是这样的:
在你的fragment.xml
<androidx.constraintlayout.widget.ConstraintLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".presentation.recipeitem.RecipeDetailsFragment">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_constraintTop_toTopOf="parent"
android:elevation="4dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
/>
.
.
然后在你的片段中你会这样做
在 onViewCreated(..) 内
val navController = findNavController()
val appBarConfiguration = AppBarConfiguration(navController.graph)
viewBinding.toolbar.setupWithNavController(navController, appBarConfiguration)
如果您需要添加标题,请在 onResume 中使用它
viewBinding.toolbar.title = "my title"
答案 7 :(得分:0)
您必须添加这些行后退按钮自动显示
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
返回,按钮点击自动返回活动
@Override
public boolean onSupportNavigateUp() {
onBackPressed();
return true;
}