В моем приложении андроида я хочу, чтобы стандартная/основная строка заголовка изменила цвет.
Для изменения цвета текста, Вы имеете setTitleColor(int color)
, существует ли способ изменить цвет фона панели?
Эта ветка поможет вам создать собственную строку заголовка в XML-файле и использовать ее в своей деятельности
Редактировать
Вот краткое изложение содержания ссылки выше - Это просто , чтобы установить цвет текста и фона строки заголовка - без изменения размера, без кнопок, только самый простой образец
res / layout / 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="This is my new title"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textColor="@color/titletextcolor"
/>
res / values / themes.xml - Мы хотим сохранить тему Android по умолчанию, и нам просто нужно изменить цвет фона заголовка. Итак, мы создаем тему, которая наследует тему по умолчанию, и устанавливаем стиль фона в наш собственный стиль.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="customTheme" parent="android:Theme">
<item name="android:windowTitleBackgroundStyle">@style/WindowTitleBackground</item>
</style>
</resources>
res / values / styles.xml - здесь мы устанавливаем тему для использования желаемого цвета для фона заголовка
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="WindowTitleBackground">
<item name="android:background">@color/titlebackgroundcolor</item>
</style>
</resources>
res / values / colors.xml - здесь задайте цвет, который вы want
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="titlebackgroundcolor">#3232CD</color>
<color name="titletextcolor">#FFFF00</color>
</resources>
В AndroidMANIFEST.xml установите атрибут темы либо в приложении (для всего приложения), либо в тегах действия (только для этого действия)
<activity android:name=".CustomTitleBar" android:theme="@style/customTheme" ...
From the Activity (называемого CustomTitleBar) :
@Override
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);
}
Полагаю, нет. Вы можете создать действие без названия и создать свою собственную строку заголовка в макете действия.
Отметьте это , Строка 63 и ниже:
getWindow (). SetFeatureInt (Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title_1)
устанавливает customview вместо просмотра заголовка по умолчанию.
Загляните в platforms/android-2.1/data/res/layout/screen.xml
SDK. Там, похоже, определяется заголовок. Вы можете часто изучать макеты, подобные этому, и заимствовать
style="?android:attr/windowTitleStyle"
стили, которые затем можно использовать и переопределять в своих собственных TextViews.
Вы можете даже выбрать заголовок для непосредственной настройки, сделав:
TextView title = (TextView)findViewById(android.R.id.title);
Спасибо за это ясное объяснение, однако я хотел бы добавить немного больше к вашему ответу, задав связанный вопрос (на самом деле не хочу делать новый пост, поскольку этот является основанием для моего вопроса).
Я объявляю свою строку заголовка в суперклассе, из которого все остальные мои действия являются дочерними, и мне нужно изменить цвет полосы только один раз. Я также хотел бы добавить значок и изменить текст в панели. Я провел некоторое тестирование, и мне удалось изменить одно или другое, но не оба одновременно (с помощью setFeatureDrawable и setTitle). Идеальным решением было бы, конечно, следовать объяснениям в потоке, приведенном в ссылку, но, как я объявляю в суперклассе, у меня проблема из-за макета в setContentView и R.id.myCustomBar, потому что, если я хорошо помню, я могу вызвать setContentView только один раз ...
EDIT Нашел свой ответ:
Для тех, кто, как и я, любит работать с суперклассами, потому что это отлично подходит для того, чтобы сделать меню доступным повсюду в приложении, здесь он работает так же.
Просто добавьте это в свой суперкласс:
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.customtitlebar);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.customtitlebar);
customTitleText = (TextView) findViewById(R.id.customtitlebar);
(вы должны объявить текстовое представление как переменную защищенного класса)
И тогда сила этого заключается в том, что везде в вашем приложении (если, например, все ваши действия являются дочерними этого класса), вам просто нужно вызвать
customTitleText.setText("Whatever you want in title");
, и ваша строка заголовка будет отредактирована.
В моем случае связанный XML-код (R.layout.customtitlebar):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:background="@color/background">
<ImageView android:layout_width="25px" android:layout_height="25px"
android:src="@drawable/icontitlebar"></ImageView>
<TextView android:id="@+id/customtitlebar"
android:layout_width="wrap_content" android:layout_height="fill_parent"
android:text="" android:textColor="@color/textcolor" android:textStyle="bold"
android:background="@color/background" android:padding="3px" />
</LinearLayout>