首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改多项选择AlertDialog中项目的文本颜色

更改多项选择AlertDialog中项目的文本颜色
EN

Stack Overflow用户
提问于 2013-04-10 13:44:38
回答 2查看 2K关注 0票数 1

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

代码语言:javascript
复制
Apple
Banana
Mango
Grape

显示AlertDialog时,所有项目的默认文本颜色均为黑色。但我想做如下所示。

当显示AlertDialog时,

Apple的文本颜色应为Red

Banana的文本颜色应为Yellow

Mango的文本颜色应为Green

Grape的文本颜色应为Purple

我该怎么做呢?

EN

回答 2

Stack Overflow用户

发布于 2019-09-24 13:09:42

您可以使用textColorAlertDialogListItem属性来实现

代码语言:javascript
复制
<style name="MyDialogStyle2" parent="Theme.MaterialComponents.Dialog.Alert">
    <item name="textColorAlertDialogListItem">@color/black</item>
</style>

并在创建警报对话框时传递此样式

代码语言:javascript
复制
AlertDialog.Builder builder = new AlertDialog.Builder(context, R.style.MyDialogStyle);
票数 3
EN

Stack Overflow用户

发布于 2013-04-10 13:54:56

您可以执行以下操作

代码语言:javascript
复制
 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

编辑:

您可以按空格拆分单词‘s,然后将可跨转字符串设置为foreground。还可以为对话框中的每个单词提供自定义颜色。

您还可以从http://www.colorhunter.com/tag/android/1指定颜色

main.xml

代码语言:javascript
复制
<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自定义布局

代码语言:javascript
复制
<?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

代码语言:javascript
复制
 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();  
 }
 }

生成的快照

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15917877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档