仅在某些活动中的操作栏?
Posted
技术标签:
【中文标题】仅在某些活动中的操作栏?【英文标题】:actionbar only in some activities? 【发布时间】:2019-03-01 01:57:27 【问题描述】:我正在构建一个 android 应用程序,我想知道为什么有些活动显示操作栏而有些不显示。操作栏本身仅显示应用程序包名称。包含相同 xml 代码的两个活动具有不同的行为。一个显示带有应用标题的操作栏,另一个不显示。
启动器活动还显示带有应用标题的操作栏。
启动器活动 XML
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayoutxmlns: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_
android:layout_
tools:context=".activities.LoginActivity">
<LinearLayout
android:id="@+id/linearLayout"
android:layout_
android:layout_
android:orientation="vertical"
app:layout_constraintBottom_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"></LinearLayout>
<TextView
android:id="@+id/textpassword"
android:layout_
android:layout_
android:text="Password"
android:textSize="30sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.441" />
<TextView
android:id="@+id/textlogin"
android:layout_
android:layout_
android:text="Login"
android:textSize="30sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.22" />
<EditText
android:id="@+id/passwordfield"
android:layout_
android:layout_
android:layout_marginTop="9dp"
android:ems="10"
android:inputType="textPassword"
android:text="Password"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textpassword" />
<EditText
android:id="@+id/loginfield"
android:layout_
android:layout_
android:layout_marginTop="7dp"
android:ems="10"
android:inputType="textPersonName"
android:text="Name"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textlogin" />
<Button
android:id="@+id/loginbutton"
android:layout_
android:layout_
android:layout_marginTop="7dp"
android:ems="10"
android:inputType="textPersonName"
android:text="Login"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/passwordfield"/>
具有奇怪行为的两个活动之一:
<?xml version="1.0" encoding="utf-8"?>
<!-- A RecyclerView with some commonly used attributes -->
<android.support.v7.widget.RecyclerView android:id="@+id/todo_recycler_view"
android:scrollbars="vertical"
android:layout_
android:layout_
xmlns:android="http://schemas.android.com/apk/res/android" />
另外,我想知道如何在 Acionbar 中更改 App 标题。定义标题的 xml 中似乎没有选项。我认为 android studio 将此设置为项目名称(这是我的工作名称,而不是实际的“真实”应用程序名称)?根据文档,我可以构建自己的应用栏 (https://developer.android.com/training/appbar/setting-up)。这会有帮助吗?
【问题讨论】:
发布您的清单 我认为最好创建您的工具栏并将其添加到所有活动中...然后您可以自定义应用标题... @FaizMir 引导我进入包含应用程序标题的字符串 xml。谢谢! @MiladBahmanabadi 我该怎么做?这是我在帖子中提到的正确文档吗? (应用栏?) 是的,没错,我会发布一个例子,希望对你有所帮助 【参考方案1】:要创建Toolbar
并在其中使用自定义标题,您只需记住Toolbar
只是一个花哨的ViewGroup
,因此您可以像这样添加自定义标题:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar_top"
android:layout_
android:layout_
android:minHeight="?attr/actionBarSize"
android:background="@color/action_bar_bkgnd"
app:theme="@style/ToolBarTheme" >
<TextView
android:layout_
android:layout_
android:text="Toolbar Title"
android:layout_gravity="center"
android:id="@+id/toolbar_title" />
</android.support.v7.widget.Toolbar>
这意味着您可以随意设置TextView
的样式,因为它只是一个普通的TextView
。因此,在您的活动中,您可以像这样访问标题:
Toolbar toolbarTop = (Toolbar) findViewById(R.id.toolbar_top);
TextView mTitle = (TextView) toolbarTop.findViewById(R.id.toolbar_title);
【讨论】:
【参考方案2】:你得到的奇怪行为可能并不奇怪。
ActionBar
默认显示在AndroidManifest.xml
中设置的应用程序名称为android:label="@string/app_name"
。
在特定的activity
中为actionbar
使用不同标题的一种直接方法是在AndroidManifest.xm
中为activity
提供标签,如下所示:-
<activity android:name=".Main2Activity" android:label="page2"></activity>
这可能是奇怪行为的原因。
如果某些活动没有显示actionbar
,那可能是因为manifest
文件中活动的theme
。
【讨论】:
以上是关于仅在某些活动中的操作栏?的主要内容,如果未能解决你的问题,请参考以下文章