我在Android中自定义RadioButton Widget时遇到问题。 我需要一个带图标的RadioButton和图标下的单行文本。 iOS中底部栏的方面,图标和文字以不同颜色检查。 我已经创建了一个Custom类,扩展了RadioButton并扩展了我的布局。
小部件工作正常,但不显示我的布局,它只显示背景,而不是imageView和textView。 有什么想法吗?
谢谢你的进步
EventListVM
布局自定义是:
public class RadioButtonImageToggle extends RadioButton {
private Drawable imageNormalState, imageCheckedState;
private ImageView imageView;
private TextView textViewTitle;
public RadioButtonImageToggle(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initViews(context,attrs, defStyleAttr);
}
public RadioButtonImageToggle(Context context, AttributeSet attrs) {
super(context, attrs);
initViews(context, attrs, 0);
}
private void initViews(Context context, AttributeSet attrs, int defStyle) {
TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.RadioButtonImageToggle, defStyle, R.style.Widget_Holo_RadioImageToggle);
try {
// get the text and colors specified using the names in attrs.xml
imageNormalState = a.getDrawable(R.styleable.RadioButtonImageToggle_imageNormalState);
imageCheckedState = a.getDrawable(R.styleable.RadioButtonImageToggle_imageCheckedState);
} finally {
a.recycle();
}
LayoutInflater layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = layoutInflater.inflate(R.layout.radio_image_toggle, null);
imageView = (ImageView) view.findViewById(R.id.iconToggle);
textViewTitle = (TextView) view.findViewById(R.id.textViewTitle);
imageView.setImageDrawable(imageNormalState);
textViewTitle.setText(getText());
}
@Override
public void toggle()
{
if(isChecked()) {
imageView.setImageDrawable(imageCheckedState);
if(getParent() instanceof RadioGroup) {
((RadioGroup)getParent()).clearCheck();
}
} else {
imageView.setImageDrawable(imageNormalState);
setChecked(true);
}
}
答案 0 :(得分:0)
只需为文字选择器制作可绘制文件
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:color="#ffffffff"/>
<item android:color="@color/que_font"/></selector>
为单选按钮背景制作另一个drawable
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true"><shape>
<solid android:color="@color/select_btn_bg" />
<corners
android:radius="5dp"
/>
<stroke android:width="1dp" android:color="@color/select_btn_border" />
</shape></item>
<item android:state_checked="false"><shape android:shape="rectangle">
<!--<solid android:color="@android:color/transparent" />-->
<solid android:color="@color/default_btn_bg" />
<corners
android:radius="5dp"
/>
<stroke
android:width="1dp"
android:color="@color/default_btn_border"
/>
</shape></item></selector>
然后在你的单选按钮中设置如下所示的属性
android:textColor="@drawable/rbtn_text_selector"
android:background="@drawable/rbtn_background_selector"
android:button="@null"