0
AndroidのRadioButtonウィジェットのカスタマイズに問題があります。 アイコンの下に1行のテキストを含むRadioButtonが必要です。 iOSのボトムバーのようなアスペクト。アイコンとテキストは別の色でチェックされています。 私はRadioButtonを拡張し、レイアウトを膨張させるカスタムクラスを作成しました。カスタムレイアウトRadioButton Android
ウィジェットはうまく動作しますが、私のレイアウトは表示されません。それは、imageViewとtextViewではなく背景のみを表示します。 進歩で
おかげ
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);
}
}
レイアウトカスタムです:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:id="@+id/iconToggle"
android:layout_gravity="center"
android:src="@mipmap/ic_launcher" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="TITLE"
android:id="@+id/textViewTitle"
android:layout_gravity="center"
android:lines="1"
android:singleLine="true" />
をプロパティを設定します。あなたが右にチェックしたときにテキストの色を変更したい –
屋。私はあなた自身のradiobuttonViewを作成する代わりにhttp://stackoverflow.com/questions/19163628/adding-custom-radio-buttons-in-androidのようなものを使う方が良いと思います。カスタマイズする以外に何かしたいことがない限りラジオボタン。 –