【问题标题】:RadioButton: Text before the button [closed]RadioButton:按钮前的文本[关闭]
【发布时间】:2013-12-31 19:24:38
【问题描述】:
请看下面的代码
<RadioButton android:id="@+id/radio_pirates"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/pirates"
android:onClick="onRadioButtonClicked"/>
这些单选按钮的文本位于按钮之后。但我需要在按钮之前显示文本。我怎样才能做到这一点?请帮忙。
【问题讨论】:
标签:
java
android
eclipse
user-interface
radio-button
【解决方案1】:
您可以通过设置android:button="@null" 并将RadioButton 的drawable 添加为android:drawableRight 来实现此目的。您可以使用 android:drawablePadding 更改文本和 drawable 之间的填充。
<RadioButton
android:id="@+id/second"
android:button="@null"
android:drawableRight="@android:drawable/btn_radio"
android:drawablePadding="20dp"
android:layout_width="200dip"
android:layout_height="wrap_content"
android:text="@string/second"
android:textSize="20dip" />
</RadioGroup>
【解决方案2】:
试试这个..
<RadioButton
android:id="@+id/radio0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@null"
android:checked="true"
android:drawableRight="@android:drawable/btn_radio"
android:text="RadioButton" />
【解决方案3】:
你可以这样做
<RadioButton
android:id="@+id/radio_pirates"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@null"
android:drawableRight="@drawable/custom_radio_button"
android:drawablePadding="5dp"
android:text="@string/pirates" />
【解决方案4】:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/txt_radio_pirates"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:text="@string/pirates" />
<RadioButton
android:id="@+id/radio_pirates"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@null"
android:drawableRight="@drawable/custom_radio_button"
android:layout_alignLeft="@+id/txt_radio_pirates"
android:layout_marginLeft="80dp"
android:layout_centerVertical="true"/>
</RelativeLayout>
试试这个方法
【解决方案5】:
为此,最好使用 textview 来显示文本。但是您需要为其定制适配器。请检查该适配器的以下代码作为参考。
class CustomAdapter extends ArrayAdapter<ContactPerson>{
private ArrayList<ContactPerson> contactList;
public CustomAdapter(Context context, int textViewResourceId,
ArrayList<ContactPerson> contactList) {
super(context, textViewResourceId, contactList);
// TODO Auto-generated constructor stub
this.contactList = new ArrayList<ContactPerson>();
this.contactList.addAll(contactList);
}
private class ViewHolder{
TextView ContactName;
CheckBox contactCheck;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder = null;
Log.v("Convert View", String.valueOf(position));
if(convertView==null){
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.checkbox_item, null);
holder = new ViewHolder();
holder.ContactName = (TextView) convertView.findViewById(R.id.contact_name);
holder.contactCheck = (CheckBox) convertView.findViewById(R.id.contact_check);
convertView.setTag(holder);
holder.contactCheck.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
CheckBox cb = (CheckBox) v;
ContactPerson contact = (ContactPerson) cb.getTag();
// Log.i("clicked users", contact.getName());
contact.setSelected(cb.isChecked());
}
});
}
else{
holder = (ViewHolder) convertView.getTag();
}
ContactPerson contacts = contactList.get(position);
holder.ContactName.setText("("+contacts.getName()+")");
holder.contactCheck.setChecked(contacts.isSelected());
holder.contactCheck.setTag(contacts);
holder.ContactName.setText(contacts.getName());
return convertView;
}
}
此代码用于 Dinithe d 提到的布局。