Я создаю приложение для 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). Помогло бы это?
я думаю, что было бы лучше создать свою панель инструментов и добавить ее ко всем действиям ... тогда вы можете настроить заголовок приложения ...
@FaizMir, который привел меня к строкам xml, содержащим заголовок приложения. Спасибо!
@MiladBahmanabadi Как я могу это сделать? Это правильная документация, которую я упомянул в своем сообщении? (Панель приложений?)
да, правильно, я опубликую пример, надеюсь помочь вам
вы пробовали использовать setTitle ("title") для динамического изменения названия
Это контролируется стилями и темами. Если в вашей теме есть панель действий, она будет там. Чтобы установить его, просто получите панель действий supportactionbar и установите для нее заголовок, используя вашу локализованную строку. Если панели действий нет, проверьте свои стили. Также не трогайте его, пока не будет вызван onCreate, чтобы убедиться, что он существует. Наконец, вам следует подумать о переходе на панель инструментов, это более современный подход.
Чтобы создать 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.
опубликуйте свой манифест