Проблема с отображением диалогового окна настраиваемого оповещения - PullRequest
1 голос
/ 26 мая 2011

У меня возникли проблемы с отображением настраиваемого диалогового окна с предупреждением. Чтобы представить проблему, мое приложение может динамически переключаться между Theme.Holo.Light и Theme.Holo.Dark. Когда я отображаю предупреждение с макетом по умолчанию, диалоговое окно предупреждения наследует тему действия без проблем. Когда я определяю пользовательский макет для диалогового окна предупреждения (содержащего textviews / edittexts), они отображаются нормально, когда приложение установлено в Theme.Holo.Dark, однако, когда оно установлено в Theme.Holo.Light, текст в текстовых представлениях отображается как очень светло-серый, а границы текста редактирования и текст почти невидимы (белый на белом фоне). Единственный способ как-то исправить это - напрямую объявить цвет текста в текстовых представлениях в файле макета XML настраиваемого диалога для каждого текстового поля. Однако, чтобы использовать этот метод, мне нужно создать отдельные макеты для тем holo.light и holo.dark. В дополнение к этому я не могу найти никакой информации о том, как изменить цвет границы для поля edittext, что также является проблемой. Я попытался создать и указать тему в AlertDialog.Builder, однако, кажется, что это никогда не применяет стили текста, и, как я уже говорил, я не могу понять, как изменить цвет границы для полей edittext или сделать их специально наследуемыми. из темы Holo.Light. Соответствующий код ниже, и любая помощь будет принята с благодарностью.

<?xml version="1.0" encoding="utf-8"?>
<TableLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent">

    <TableRow android:id="@+id/tableRow1" android:layout_width="wrap_content" android:layout_height="wrap_content">
        <TextView android:text="First Name" android:id="@+id/fname" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
        <EditText android:text="" android:id="@+id/fname_input" android:layout_width="225sp" android:layout_height="wrap_content"></EditText>
    </TableRow>
    <TableRow android:id="@+id/tableRow2" android:layout_width="wrap_content" android:layout_height="wrap_content">
        <TextView  android:text="Last Name" android:id="@+id/lname" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
        <EditText android:text="" android:id="@+id/lname_input" android:layout_width="225sp" android:layout_height="wrap_content"></EditText>
    </TableRow>
</TableLayout>
 @Override
         public Dialog onCreateDialog(Bundle savedInstanceState) {
             String text = getArguments().getString("text");
             String title = getArguments().getString("title");
             View layout_view = null;

             int layout = getArguments().getInt("layout");
             if(layout != -1){
             LayoutInflater inflater = (LayoutInflater) getActivity().getApplicationContext().getSystemService(LAYOUT_INFLATER_SERVICE);
             layout_view = inflater.inflate(layout, (ViewGroup)getActivity().findViewById(R.layout.main));
             }

             return new AlertDialog.Builder(getActivity()/*,AlertDialog.THEME_HOLO_DARK*/)
                     .setTitle(title)
                     .setMessage(text)
                     .setView(layout_view)
                     .setPositiveButton(android.R.string.ok,
                             new DialogInterface.OnClickListener() {
                                 public void onClick(DialogInterface dialog, int whichButton) {
                                 }
                             }
                     )
                     .create();
         }
...