Переопределение макета заголовка диалога в Android - PullRequest
5 голосов
/ 15 марта 2012

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

<item name="dialogTitleDecorLayout">@layout/dialog_title</item>

Но когда я пытаюсь переопределить его в моем Theme

<style name="Theme.Dialog.MyDialog" parent="android:Theme.Dialog">
    <item name="android:windowBackground">@android:color/black</item>
    <item name="android:dialogTitleDecorLayout">@layout/my_dialog_title</item>
</style>

Я вижу следующую ошибку:

Не найдено ни одного ресурса, соответствующего данному имени: attr 'android: dialogTitleDecorLayout'

Почему я не могу его изменить и какможно узнать какие атрибуты можно изменить, а какие нет?

1 Ответ

1 голос
/ 05 ноября 2012

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

dialog_title.xml

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView
    android:id="@+id/text" 
    android:text="@string/tell_a_friend"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="8dip"
    android:paddingTop="12dip"
    android:paddingBottom="12dip"
    style="@style/bigTextWhite" />

</LinearLayout>

// это метод, в котором ваш диалог появляется в событии кнопки onclick

public void onClickHelp(View v) {
    final Dialog duDialog = new Dialog(this);
    duDialog.setContentView(R.layout.data_usage);
    duDialog.getWindow().setBackgroundDrawableResource(R.color.title_text);

    duDialog.setTitle("Data Usage"); // I would like to set the color and add button here
    ListView data = (ListView) duDialog.findViewById(R.id.DataUsage);
    duCursor = Data.getAll(db);
    startManagingCursor(duCursor);
    duAdapter = new DataAdapter(duCursor);
    data.setAdapter(duAdapter);
    duDialog.show();

}
...