我的问题是我想要一个拥有3个无线电按钮的无线电组,使用下面的方案。 三个选择是: 1. []男 2. []女 3. []自定义:(自我描述的身份)
然而,问题在于我希望用户在EditText中输入他们自己描述的身份以供我检索。
因此,以下代码来自我的XML页面,其中一些元素被“####”阻挡。
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="####"
android:id="@+id/male_female_custom_choice"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true">
<RadioButton android:id="@+id/radio_button_male"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/radio_button_male"
android:checked="true" />
<RadioButton android:id="@+id/radio_button_female"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/radio_button_female"
android:checked="false" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="####"
android:weightSum="1">
<RadioButton
android:id="@+id/radio_button_custom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/radio_button_custom"
android:checked="false" />
<EditText
android:layout_width="0dp"
android:layout_height="wrap_content"
android:inputType="text"
android:ems="10"
android:id="####"
android:hint="####"
android:focusableInTouchMode="true"
android:gravity="center"
android:layout_weight="1.05"
android:textSize="14sp" />
<TextView
android:layout_width="42dp"
android:layout_height="43dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="####"
android:id="####"
android:singleLine="true"
android:gravity="center"
android:layout_marginLeft="0dp"
android:textColor="#000000" />
</LinearLayout>
</RadioGroup>
如您所见,我尝试使用LinearLayout来隔离自定义选项。 然而,存在意想不到的和不希望的副作用。 1.除了其他2个预定义性别之外,还可以选择自定义选项。 2.无法单独选择自定义选项。
在活动的实际Java文件中,我有以下代码:
// button, radio button, editText, and Spinner fields
public EditText mEdit;
public RadioButton rButton;
public RadioGroup rSexGroup;
rSexGroup = (RadioGroup)findViewById(R.id.male_female_custom_choice);
// get selected radio button from RadioGroup
int selectedId = rSexGroup.getCheckedRadioButtonId();
// find radio button by returned id
rButton = (RadioButton)findViewById(selectedId);
// assign gender based on id of radio button
if (selectedId == 1) {
pat.gender = "male";
}
if (selectedId == 2) {
pat.gender = "female";
}
if (selectedId == 3) {
mEdit = (EditText)findViewById(R.id.####);
pat.gender = (mEdit.getText().toString());
}
由于我对Java有点生疏,我可能会遇到一些非常新的错误。请指教。
再一次,我正在寻找一种方法来获得一组3个RadioButton,每个都在一条线上,最后一个RadioButton与EditText相邻,从中我可以获得所需的信息。
编辑:这是我希望它看起来像的图片: (http://i68.tinypic.com/ao2oow.png)
不幸的是,发布图片我需要10点声望。 :(
Mohit的回答使EditText与自定义输入不同。 (http://i63.tinypic.com/68u88x.png)
请注意,EditText的方向与自定义相邻,而不是在下方。我为没有明确说明我想要的东西而道歉。
答案 0 :(得分:4)
selectedId
不会 1,2或3 ....调试它会得到价值.. 无法单独选择自定义选项。
RadioButton
移除您的第3个LinearLayout
并在第2个RadioButton
下方替换,并将您的EditText
和TextView
放在LinearLayout
内.. 在你的听众身上得到getCheckedRadioButtonId
的{{1}}和getText()
,然后相应地检查......
我不知道你的任务是什么,但这里是如何让所有三个RadioButton
工作并获得自定义文本....
... XML
<强>更新强>
RadioButton
.java文件..
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.ex.MainActivity" >
<RadioGroup
android:id="@+id/male_female_custom_choice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<RadioButton
android:id="@+id/radio_button_male"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="Male" />
<RadioButton
android:id="@+id/radio_button_female"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="false"
android:text="FeMale" />
<RadioButton
android:id="@+id/radio_button_custom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="false"
android:text="Custom" />
</RadioGroup>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/male_female_custom_choice"
android:layout_toRightOf="@+id/male_female_custom_choice"
android:orientation="horizontal"
android:weightSum="1" >
<EditText
android:id="@+id/edit"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".8"
android:ems="10"
android:focusableInTouchMode="true"
android:gravity="center"
android:hint="aa"
android:inputType="text"
android:textSize="14sp" />
<TextView
android:id="@+id/text"
android:layout_width="42dp"
android:layout_height="43dp"
android:layout_marginLeft="0dp"
android:layout_weight=".2"
android:gravity="center"
android:singleLine="true"
android:text="aaa"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#000000" />
</LinearLayout>
<Button
android:id="@+id/but"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/male_female_custom_choice"
android:text="Get" />
</RelativeLayout>
您还可以设置public class MainActivity extends Activity {
public EditText mEdit;
public RadioButton rButton;
public RadioGroup rSexGroup;
public Button but;
public String str = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rSexGroup = (RadioGroup)findViewById(R.id.male_female_custom_choice);
but= (Button) findViewById(R.id.but);
but.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int selectedId = rSexGroup.getCheckedRadioButtonId();
rButton = (RadioButton)findViewById(selectedId);
if (rButton.getText().toString().equals("Male")) {
str = "Male";
}
if (rButton.getText().toString().equals("FeMale")) {
str = "FeMale";
}
if (rButton.getText().toString().equals("Custom")) {
mEdit = (EditText)findViewById(R.id.edit);
str = mEdit.getText().toString();
}
Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show();
}
});
}
}
的可见性,以便只有在自定义时才会显示....
希望有所帮助......
答案 1 :(得分:1)
RelativeLayout
radiobutton
文本设置为空/ null EditText
添加为layout_alignParentBottom="true"
现在以编程方式调用EditText的onFocusChangeListener
edittext.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean b) {
if(b)
thirdRadio.setCheched(true);
}
});