Android:如何更改同一个按钮中两条不同线的颜色?

问题描述:

我最近试图为我的朋友的应用程序构建一个用户界面。 我有一些问题,不知道如何处理。 我已经搜索了一段时间的解决方案。 但仍然无法处理我的问题。Android:如何更改同一个按钮中两条不同线的颜色?

Here's what my apps looks like

我想知道是否有改变中间的按钮列两个文本的颜色的方法。 我想要的样子是:数字是粉红色的,中国人是灰色的,还有两种不同的尺寸。

+1

你可以发表你的XML点上你的问题... –

+1

更改'Button'并使用'LinearLa yout'有两个'TextViews',你可以根据需要自定义文本。 – Safa

最好的选择是将两个文本分离为两个TextView,就像Safa在评论中提出的一样,Elvira Parpalac回答。

如果你真的想保持两种文本的一个按钮,你可以使用SpannableStringForegroundColorSpan

String text1 = "xyz"; 
String text2 = "abc"; 
SpannableString spannable = new SpannableString(text1 + "\n" + text2); 
spannable.setSpan(new ForegroundColorSpan(Color.GREEN), 0, text1.length(), 0); 
spannable.setSpan(new ForegroundColorSpan(Color.RED), text1.length(), spannable.length(), 0); 

button.setText(spannable); 

您可以使用的LinearLayout自定义按钮。您只需将android:clickable="true"属性设置为LinearLayout即可。这里是你的情况的一个例子:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/buttonList" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:baselineAligned="false" 
    android:orientation="horizontal"> 

<LinearLayout 
    android:id="@+id/layout1" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:background="@drawable/button_selector" 
    android:clickable="true" 
    android:orientation="vertical" 
    android:padding="5dp"> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:text="22" 
     android:textColor="@color/bp_disabled_day" /> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="10dp" 
     android:gravity="center" 
     android:text="A" 
     android:textColor="@color/ampm_text_color" /> 

</LinearLayout> 

<View 
    android:layout_width="1dp" 
    android:layout_height="fill_parent" 
    android:background="@android:color/darker_gray" /> 

<LinearLayout 
    android:id="@+id/layout2" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:background="@drawable/button_selector" 
    android:clickable="true" 
    android:orientation="vertical" 
    android:padding="5dp"> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:text="22" 
     android:textColor="@color/bp_disabled_day" /> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="10dp" 
     android:gravity="center" 
     android:text="B" 
     android:textColor="@color/ampm_text_color" /> 

</LinearLayout> 

<View 
    android:layout_width="1dp" 
    android:layout_height="fill_parent" 
    android:background="@android:color/darker_gray" /> 

<LinearLayout 
    android:id="@+id/layout3" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:background="@drawable/button_selector" 
    android:clickable="true" 
    android:orientation="vertical" 
    android:padding="5dp"> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:text="22" 
     android:textColor="@color/bp_disabled_day" /> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="10dp" 
     android:gravity="center" 
     android:text="C" 
     android:textColor="@color/ampm_text_color" /> 

</LinearLayout> 
</LinearLayout> 

此外,您还需要添加这个文件drawable/button_selector.xml。在这个文件中,你将为“按钮”编写样式(当它处于不同的状态时)。

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" android:exitFadeDuration="@android:integer/config_longAnimTime"> 
<item android:drawable="@color/bpWhite" android:state_focused="false" android:state_pressed="false" /> 
<item android:drawable="@color/colorPrimaryDark" android:state_focused="true" android:state_pressed="true" /> 
<item android:drawable="@color/colorPrimaryDark" android:state_focused="false" android:state_pressed="true" /> 
<item android:drawable="@color/colorPrimaryDark" android:state_focused="true" android:state_pressed="false" /> 
</selector> 

而最后一步是设置OnclickListener在代码:

LinearLayout layout1 = (LinearLayout) findViewById (R.id.layout1); 
layout1.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     //TODO: Write your code 
    } 
}); 

结果:

enter image description here

enter image description here