actionbar только в некоторых видах деятельности? - PullRequest
0 голосов
/ 25 сентября 2018

Я создаю приложение для 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_width="match_parent"
android:layout_height="match_parent"
tools:context=".activities.LoginActivity">

<LinearLayout
    android:id="@+id/linearLayout"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    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_width="wrap_content"
    android:layout_height="wrap_content"
    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_width="wrap_content"
    android:layout_height="wrap_content"
    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_width="wrap_content"
    android:layout_height="wrap_content"
    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_width="wrap_content"
    android:layout_height="wrap_content"
    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_width="wrap_content"
    android:layout_height="wrap_content"
    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_width="match_parent"
    android:layout_height="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android" />

Кроме того, я хотел бы знать, как изменить заголовок приложения на панели Acionbar.Кажется, внутри xml нет опции, определяющей заголовок.Я думаю, что android studio устанавливает это для имени проекта (которое я назвал рабочим, а не реальным «настоящим» именем приложения)?Согласно документации, я могу создать свою собственную панель приложений (https://developer.android.com/training/appbar/setting-up). Поможет ли это?

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Странное поведение, которое вы получаете, может быть не таким уж странным.

ActionBar по умолчанию показывает имя приложения, которое установлено в AndroidManifest.xml как android:label="@string/app_name".

Один прямой способ использовать другой заголовок для вашего actionbar в конкретном activity состоит в том, чтобы дать метку этому activity в AndroidManifest.xm следующим образом: -

 <activity android:name=".Main2Activity" android:label="page2"></activity>

Это можетбыть причиной странного поведения.

И если некоторые действия не показывают actionbar, это может быть связано с theme действия в файле manifest.

0 голосов
/ 25 сентября 2018

Чтобы создать Toolbar и использовать в нем собственный заголовок, все, что вам нужно сделать, это помнить, что Toolbar - это просто фантазия ViewGroup, поэтому вы можете добавить собственный заголовок, например, так:

<android.support.v7.widget.Toolbar
android:id="@+id/toolbar_top"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:background="@color/action_bar_bkgnd"
app:theme="@style/ToolBarTheme" >

 <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    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);
...