Я сделал пользовательскую строку заголовка для своего приложения, которое работает. Однако, когда приложение сначала загружается, название приложения отображено в строке заголовка на мгновение, прежде чем мой текст появится. Как я мешаю этому произойти?
Я установил свою пользовательскую строку заголовка в моем основном виде деятельности здесь:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.main);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.mytitle);
mytitle.xml - то, где я установил свой текст:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/myTitle"
android:text="my text"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:textAppearance="?android:attr/textAppearance"
/>
Мое образование строки заголовка не высвечивается, просто текст.
Спасибо.
Основное объяснение: при запуске приложения, чтобы как можно быстрее реагировать на действия пользователя, Android сначала показывает окно "предварительного просмотра" приложения еще до того, как начнется его процесс. Для этого берется информация, имеющаяся в AndroidManifest.xml
приложения, и создается окно, которое выглядит так, как выглядела бы пустая активность для него. Таким образом, вы должны установить тему в манифесте так, чтобы она как можно точнее соответствовала тому, как выглядит ваш реальный пользовательский интерфейс.
В случае с пользовательским заголовком вы мало что можете сделать, потому что то, как будет выглядеть заголовок, зависит от того, что на самом деле делает ваш код, а ни один из ваших кодов еще не запущен. Лучшее, что вы можете сделать, это использовать android:theme="@android:style/Theme.NoTitleBar"
, чтобы окно предварительного просмотра вообще не пыталось показать строку заголовка... конечно, в вашей деятельности вам нужно будет убрать это, вызвав setTheme(android.R.style.Theme)
, чтобы вернуться к теме по умолчанию.
Чтобы немного уточнить, где в AndroidManifest.xml
это нужно разместить:
<application
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar" >
Ну, вы можете попробовать просто установить сначала строку заголовка, прежде чем устанавливать основное содержание.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.mytitle);
setContentView(R.layout.main);