2013-04-10 125 views
0

我可以在android中更改multiple-choice AlertDialog中每个项目的文本颜色吗?具有以下项目的我的AlertDialog弹出窗口。更改多项选择中的项目的文本颜色AlertDialog

Apple 
Banana 
Mango 
Grape 

显示AlertDialog时,默认的文本颜色为黑色的所有项目。但我想按照下面的方法做。

当显示AlertDialogApple

文字颜色应该是Red

Banana的文本颜色应为Yellow

Mango的文本颜色应为Green

Grape的文本颜色应为Purple

我该怎么做?

+0

使用通过膨胀自定义布局的自定义对话框。你可以设置文本的颜色。 – Raghunandan 2013-04-10 05:47:01

+0

试试下面的编辑 – Raghunandan 2013-04-10 06:23:23

回答

2

你可以做如下

builder.setMessage(Html.fromHtml("<font color='#FF0000'><b>John:</b></font>"+"How are you?")); 
          OR 

<string name="Howtoplay"><![CDATA[html data here ]]> 
</string> 
builder.setMessage(Html.fromHtml(getString(R.string.HowtoPlay))); 

          OR 

使用自定义对话框,然后就可以设置文字的颜色。

how to apply color in text message in alert dialog box in android

编辑:

您可以通过分割空间的字的,然后设置spannable串前景。也可以为对话框中的每个单词提供自定义颜色。

你也可以从http://www.colorhunter.com/tag/android/1

main.xml中指定的颜色

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context=".MainActivity" > 


<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/textView1" 
    android:layout_alignRight="@+id/textView1" 
    android:layout_marginBottom="84dp" 
    android:layout_marginRight="18dp" 
    android:text="Button" /> 

dialog.xml自定义布局进行充气

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 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/editText1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    /> 

<Button 
    android:id="@+id/cancel" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginBottom="127dp" 
    android:text="CANCEL" /> 

</RelativeLayout> 

你MainActivity

public class MainActivity extends Activity { 

String[] each; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Button b= (Button) findViewById(R.id.button1); 
    b.setOnClickListener(new OnClickListener() 
    { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      showpopup(); 
     } 

    }); 
} 
public void showpopup() 
{ 

final Dialog d = new Dialog(MainActivity.this); 
d.setTitle("my title"); 
d.setContentView(R.layout.dialog); 
TextView tv= (TextView) d.findViewById(R.id.editText1); 
String s="Apple Bannana Mango Orange"; 

tv.setText(""); 
for(int i=0;i<s.length();i++) 
{ 
    each = s.split("\\s+"); 
} 
for(int i=0;i<each.length;i++) 
    { 

    SpannableString ss1= new SpannableString(each[i]); 
     if(each[i].equals("Apple")) 
     ss1.setSpan(new ForegroundColorSpan(Color.RED), 0, ss1.length(), 0); 
     else if(each[i].equals("Bannana")) 
      ss1.setSpan(new ForegroundColorSpan(Color.YELLOW), 0, ss1.length(), 0); 
     else if(each[i].equals("Mango")) 
      ss1.setSpan(new ForegroundColorSpan(Color.GREEN), 0, ss1.length(), 0); 
     else if(each[i].equals("Orange")) 
      ss1.setSpan(new ForegroundColorSpan(Color.GRAY), 0, ss1.length(), 0); 
     tv.append(ss1); 
     tv.append(" "); 

     tv.setMovementMethod(LinkMovementMethod.getInstance()); 
    } 

Button cancel = (Button) d.findViewById(R.id.cancel); 

    cancel.setOnClickListener(new OnClickListener() 
    { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      d.cancel(); 

     } 

    }); 
    d.show(); 
} 
} 

产生的快照

enter image description here

+0

谢谢拉古南丹。但这不是我的问题的答案。我想更改多选AlertDialog中每个项目的文本颜色。请阅读我的问题aganin。所以它是列表。 “苹果香蕉芒果葡萄”显示为一个列表。我需要更改列表项的文本颜色。我想你可以理解我的问题。 – Bishan 2013-04-10 06:32:11

+0

好的,然后有自定义列表。根据位置获取项目,然后设置每个文本的颜色。这也是可能的。如果你可以发布一些代码,它会有帮助。只是说多选AlertDialog不会帮助。向我们展示如何在多选AlertDialog中设置文本 – Raghunandan 2013-04-10 06:33:34

+0

请参阅[this](http://developer.android.com/guide/topics/ui/dialogs.html)。有一个'多项选择AlertDialog'的例子 – Bishan 2013-04-10 06:36:55

相关问题