Панель действий только в некоторых действиях?

Я создаю приложение для 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 устанавливает это в имя проекта (которое является моим рабочим названием, а не фактическим "настоящим" именем приложения)? Согласно документации, я могу создать свою собственную панель приложений (https://developer.android.com/training/appbar/setting-up). Помогло бы это?

опубликуйте свой манифест

Faiz Mir 25.09.2018 14:28

я думаю, что было бы лучше создать свою панель инструментов и добавить ее ко всем действиям ... тогда вы можете настроить заголовок приложения ...

Milad Bahmanabadi 25.09.2018 14:31

@FaizMir, который привел меня к строкам xml, содержащим заголовок приложения. Спасибо!

NKnuelle 25.09.2018 14:38

@MiladBahmanabadi Как я могу это сделать? Это правильная документация, которую я упомянул в своем сообщении? (Панель приложений?)

NKnuelle 25.09.2018 14:39

да, правильно, я опубликую пример, надеюсь помочь вам

Milad Bahmanabadi 25.09.2018 14:43

вы пробовали использовать setTitle ("title") для динамического изменения названия

Kaveri 25.09.2018 14:47

Это контролируется стилями и темами. Если в вашей теме есть панель действий, она будет там. Чтобы установить его, просто получите панель действий supportactionbar и установите для нее заголовок, используя вашу локализованную строку. Если панели действий нет, проверьте свои стили. Также не трогайте его, пока не будет вызван onCreate, чтобы убедиться, что он существует. Наконец, вам следует подумать о переходе на панель инструментов, это более современный подход.

Sam 25.09.2018 15:47
0
7
95
2

Ответы 2

Чтобы создать 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);

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

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

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

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

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

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

Другие вопросы по теме