Android Xamarin: добавление программных радиокнопок с цветом

я пытаюсь построить что-то вроде этого:

Мое приложение получает массив вопросов и ответов. Для каждого ответа мне нужно программно создать RadioButton (на рисунке, например, 4 переключателя).

Итак, мой первый вопрос: будете ли вы работать с RadioButtons или вы думаете, что другой обходной путь справится с этой задачей лучше?

И мой второй вопрос: можно ли изменить цвет для каждой радиокнопки или как я могу дать каждой радиокнопке небольшой вид, где я могу установить цвет фона (то есть кнопка, затем маленький квадратик с цветом и затем текст переключателя)

Возможно ты можешь помочь мне :)


person A. Westmeier    schedule 22.03.2017    source источник


Ответы (1)


Итак, мой первый вопрос: будете ли вы работать с RadioButtons или вы думаете, что другой обходной путь справится с этой задачей лучше?

Да, RadioButton подходит для этой работы.

можно ли изменить цвет для каждого переключателя

Да, это возможно. Просто установите доступный ресурс для android:button из RadioButton. Например:

<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, а селектор предназначен для состояния checked и unchecked RadioButton.

person Grace Feng    schedule 23.03.2017
comment
Спасибо за ваш ответ :) это мне очень помогло. Но, в конце концов, я работаю с radioButtons[i].SetCompoundDrawablesRelativeWithIntrinsicBounds(square, null, null, null); и просто использовал маленький белый квадрат и установил оттенок на цвет, потому что мне нужно изменить это динамически. - person A. Westmeier; 28.03.2017