2012-06-21 2 views
1

Я хочу изменить цвет строки заголовка динамически, то есть: кто-то нажимает кнопку, он меняет цвет. Однако я не могу заставить его заполнить весь заголовок. Это происходит как на эмуляторе, так и на Nexus One. Есть идеи?Проблемы с изменением цвета строки заголовка

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/title_bar" android:background="@color/title_bar_blue" android:layout_width="fill_parent" android:layout_height="fill_parent"> 
    <TextView android:id="@+id/title_left_text" android:layout_alignParentLeft="true" style="?android:attr/windowTitleStyle" android:layout_width="wrap_content" android:layout_height="wrap_content"/> 
    <TextView android:id="@+id/title_right_text" android:layout_alignParentRight="true" style="?android:attr/windowTitleStyle" android:layout_width="wrap_content" android:layout_height="wrap_content"/> 
</RelativeLayout> 

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 
    setContentView(R.layout.main); 
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title); 

    titleBar = (RelativeLayout) findViewById(R.id.title_bar); 
    titleBar.setBackgroundResource(R.color.title_bar_green); 

title bar

ответ

1

((View) titleBar.getParent()).setBackgroundColor(R.color.title_bar_green); Попробуйте Это не самый лучший способ сделать тыс работа. Но если это сработает, то вы узнаете, что вам нужно установить цвет фона R.id.title_bar.

+0

спасибо, что делает работа. Любопытно, хотя, если это не лучший способ выполнить эту работу, что это такое? – Roger

+0

Вызов 'getParent()' не является хорошим стилем, и иногда это может быть даже опасно. – vasart

+0

Вы можете попробовать получить родительский заголовок title_bar с помощью 'findViewById (titleContainerId)' с помощью этого кода: // получить значение для com.android.internal.R.id.title_container (= 0x1020149) int titleContainerId = (Integer) Class.forName ("com.android.internal.R $ ID") ПолучитьПолеЗаголовка ("title_container") получить (нуль);.. ' – vasart

0

попробовать это

titleBar = (RelativeLayout) findViewById(R.id.title_bar); 
final FrameLayout titleContainer = (FrameLayout)titleBar.getParent(); 
titleContainer.setPadding(0, 0, 0, 0) 
titleBar.setBackgroundResource(R.color.title_bar_green); 
+0

Будет ли текст перемещаться к левому краю, если вы установите отступ 0 до родителя title_bar? – vasart

+0

есть, но вы можете установитьPadding для заголовкаBar .............. –

Смежные вопросы