如何更改警报对话框列表视图中的文本颜色?

时间:2014-06-12 04:22:32

标签: android colors android-alertdialog

以下是我的代码,用于在单击按钮时显示简单的警报对话框

AlertDialog.Builder newImage = new AlertDialog.Builder( MyActivity.this, AlertDialog.THEME_HOLO_LIGHT );
newImage.setTitle( "Select Image" );
final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String> (  MyActivity.this, android.R.layout.simple_list_item_1 );
arrayAdapter.add( "Take from camera" );
arrayAdapter.add( "Select from gallery" );

newImage.setAdapter(arrayAdapter, new DialogInterface.OnClickListener() 
{
    @Override
    public void onClick( DialogInterface dialog, int which ) 
    {
    }
});

此代码,显示输出如下图像

  

enter image description here

它显示白色的列表项,这就是它不可见的原因。我想将列表项的颜色更改为黑色。

我该怎么做?

5 个答案:

答案 0 :(得分:3)

试试这个

final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String> (  MyActivity.this, android.R.layout.simple_list_item_1 ) {
  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    View view = super.getView(position, convertView, parent);
    TextView text1 = (TextView) view.findViewById(android.R.id.text1);
    text1.setTextColor(Color.BLACK);
    return view;
  }
};

只需覆盖ArrayAdapter的getview,找到textView即可更改颜色

答案 1 :(得分:1)

只需使用您的自定义xml文件而不是android.R.layout.simple_list_item_1,然后将其传递给 ArrayAdapter。

喜欢这样:

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

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#ff00ff"
        android:textSize="20sp"
        android:text="TextView" />

</LinearLayout>

并更改适配器:

final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String> (this,R.layout.Your_xml,R.id.textView1);

答案 2 :(得分:1)

TextView txt1 = (TextView) v.findViewById(android.R.id.text1);
txt1.setTextColor(Color.RED);

<强>更新

final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String> (  MyActivity.this, android.R.layout.simple_list_item_1 ) {
  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    View view = super.getView(position, convertView, parent);
    TextView text1 = (TextView) view.findViewById(android.R.id.text1);
    text1.setTextColor(Color.RED);
    return view;
  }
};

我希望这会对你有所帮助。

答案 3 :(得分:0)

你需要在布局中定义custem alert对话框视图 首先,然后执行功能

    LayoutInflater factory = LayoutInflater.from(YourCurrentclass.this);
    View deleteDialogView = factory.inflate(R.layout.mylayout, null);
    final AlertDialog deleteDialog = new AlertDialog.Builder(
            YourCurrentclass.this).create();
    deleteDialog.setView(deleteDialogView);
    final TextView text = (TextView) deleteDialogView
            .findViewById(R.id.textv2);
    Button p = (Button) deleteDialogView.findViewById(R.id.plusbtn);
    Button m = (Button) deleteDialogView.findViewById(R.id.minusbtn);
p.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
                    text.setTextColor(Color.BLACK);
        }
    });

当您在此创建自定义dilaoag时,也可以从layout(mylayout)文件中更改它。

答案 4 :(得分:0)

使用这种最简单的方式更改文字颜色:

在值文件夹中的string.xml文件中创建字符串值,如下所示

<string name="text1">Font color is <font fgcolor="#000000">Take from camera</font></string>

并且您可以通过此函数将此字符串用于适配器:

arrayAdapter.add(getResources().getString(R.string.text1));
希望这会奏效。祝你好运..