Android: где найти RadioButton Drawable?

Хорошо, я пытаюсь создать собственное представление с именем CheckedRelativeLayout.

Его цель такая же, как у CheckedTextView, чтобы иметь возможность использовать его в списке элементов, которые вы хотите выбрать, или в Spinner.

Теперь все работает нормально, я расширил RelativeLayout и реализовал Checkable интерфейс.

Однако я застрял на довольно простой проблеме: где я могу найти Drawable, который используют CheckedTextView и RadioButton?

Я посмотрел исходный код обоих, и они, кажется, используют com.android.internal.R. Ну... это внутреннее дело. Поэтому я не могу получить к нему доступ.

Есть ли способ получить эти Drawables или как-то решить проблему?


person Peterdk    schedule 04.05.2010    source источник


Ответы (3)


загляните в папку SDK /platforms/android-2.0/data/res/, вы можете получить к ним доступ либо через android.R.drawable (если общедоступный), либо вам нужно скопировать их как доступные для вашего проекта.

person Alex Volovoy    schedule 04.05.2010
comment
Замечательно. Я нашел их. Также нашел соответствующий R.drawable.btn_radio. Но это только один. Есть btn_radio_off.pngfiles и т. д. Как я могу получить к ним доступ? Есть ли что-то вроде государственного управления? - person Peterdk; 04.05.2010
comment
это отрисовка с сохранением состояния. Он изменяет состояние в зависимости от состояния представления. Если вы посмотрите на него в папке SDK, он определяется как XML. Глядя на XML, вы можете увидеть, какие настоящие png используются (они находятся в папках drawable-hdpi/mdpi. Drawable с сохранением состояния просто потрясающие, и вы также можете делать то же самое с цветами. - person Alex Volovoy; 04.05.2010
comment
Чтобы использовать btn_radio для текущей темы, вы можете использовать ?android:attr/listChoiceIndicatorSingle в качестве своего рисунка. - person sidon; 06.09.2013

Для полноты:

Вот некоторые фрагменты кода, которые показывают, как вы работаете с принятым ответом.

 //Image Setup (Once when creating this view)
 ImageView indicator = (ImageView) findViewById(R.id.RadioStatusImage);
 indicator.setImageDrawable(getResources().getDrawable(android.R.drawable.btn_radio));

 //State Change (In some other method)
  android.R.attr.state_checked
  if (isChecked)
  {
     indicator.setImageState(android.R.attr.state_checked, false);
  }
  else
  {
     indicator.setImageState(View.ENABLED_STATE_SET, false);
  }
  invalidate();
person Peterdk    schedule 04.05.2010

Чтобы использовать новую анимированную радиокнопку по умолчанию, правильный ответ находится в комментарии @sidon:

?android:attr/listChoiceIndicatorSingle

Используя это в пользовательской позиции относительно текста:

<RadioButton
    ...
    android:gravity="center_horizontal|bottom"
    android:drawableTop="?android:attr/listChoiceIndicatorSingle"
    android:button="@null"
    />
person dsalaj    schedule 24.08.2019