Android Xamarin:添加带有颜色的可编程单选按钮

k2fxgqgv  于 2023-05-12  发布在  Android
关注(0)|答案(1)|浏览(123)

我正在尝试构建这样的东西:
我的应用得到一个问答数组。对于每个答案,我需要以编程方式创建一个RadioButton(例如,在图片中,有4个单选按钮)。
所以我的第一个问题是,您会使用RadioButton,还是认为另一种方法会做得更好?
第二个问题是否可以改变每个单选按钮的颜色,或者我如何给予每个RadioButton一个小View,在那里我可以设置背景颜色(一个有按钮,然后是一个有颜色的小方块,然后是单选按钮的文本)?

s4chpxco

s4chpxco1#

所以我的第一个问题是,你会使用RadioButtons还是你认为另一种解决方案会做得更好?
是的,这里的RadioButton适合这份工作。
是否可以更改每个单选按钮的颜色
是的,有可能。只需为RadioButtonandroid:button设置可绘制资源。例如:

<RadioGroup android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:orientation="vertical"
            android:layout_marginLeft="5dp">
  <RadioButton android:id="@+id/ware1"
               android:layout_height="wrap_content"
               android:layout_width="wrap_content"
               android:text="@string/Ware1"
               android:button="@drawable/gradient"
               android:paddingLeft="8dp" />
  <RadioButton android:id="@+id/ware2"
           android:layout_height="wrap_content"
           android:layout_width="wrap_content"
           android:text="@string/Ware2" />
  <RadioButton android:id="@+id/ware3"
           android:layout_height="wrap_content"
           android:layout_width="wrap_content"
           android:text="@string/Ware3" />
  <RadioButton android:id="@+id/ware4"
           android:layout_height="wrap_content"
           android:layout_width="wrap_content"
           android:text="@string/Ware4" />
</RadioGroup>

我只为第一个RadioButton创建了一个选择器,这个按钮的背景色是渐变色,你可以以此为例创建你的:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_checked="false">
    <layer-list>
      <item android:height="25dp" android:width="25dp">
        <shape android:shape="oval">
          <gradient
              android:startColor="#E0FFCD"
              android:endColor="#42FAA1"
              android:angle="45" />
          <stroke android:width="2dp"
                  android:color="#000000" />
        </shape>
      </item>
    </layer-list>
  </item>
  <item android:state_checked="true">
    <layer-list>
      <item android:height="25dp" android:width="25dp">
        <shape android:shape="oval">
          <gradient
              android:startColor="#E0FFCD"
              android:endColor="#42FAA1"
              android:angle="45" />
          <stroke android:width="2dp"
                  android:color="#2d1717" />
        </shape>
      </item>
      <item android:height="10dp" android:width="10dp"
            android:gravity="center">
        <shape android:shape="rectangle">
          <solid android:color="#000000" />
        </shape>
      </item>
    </layer-list>
  </item>
</selector>

如果你觉得这太麻烦了,无法为每个按钮创建形状,你可以使用图像资源来替换它们,无论如何,你将需要为每个RadioButton创建选择器,并且选择器是针对RadioButtoncheckedunchecked状态。

相关问题