问题显示自定义警报对话框

时间:2011-05-25 20:43:45

标签: android dialog alertdialog

我无法正确显示自定义警报对话框。为了解决这个问题,我的应用程序可以动态地在Theme.Holo.Light和Theme.Holo.Dark之间切换。当我使用默认布局显示警报时,警报对话框将继承活动的主题,没有任何问题。当我为警报对话框(包含textviews / edittexts)定义自定义布局时,当应用程序设置为Theme.Holo.Dark时,它们显示正常,但是当它设置为Theme.Holo.Light时,将显示textview中的文本作为一个非常浅灰色,edittext边框和文本几乎不可见(白色背景上的白色)。我可以解决这个问题的唯一方法是直接在每个文本字段的自定义对话框xml布局文件中的textviews中声明文本的颜色。但是,要使用此方法,我需要为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();
         }

0 个答案:

没有答案