嵌入了EditText的Android Radio Button Group

时间:2016-02-10 05:30:13

标签: java android

我的问题是我想要一个拥有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的方向与自定义相邻,而不是在下方。我为没有明确说明我想要的东西而道歉。

2 个答案:

答案 0 :(得分:4)

  1. 因为selectedId不会 1,2或3 ....调试它会得到价值..
  2.   

    无法单独选择自定义选项。

    1. RadioButton移除您的第3个LinearLayout并在第2个RadioButton下方替换,并将您的EditTextTextView放在LinearLayout内..
    2. 在你的听众身上得到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);
        }
    });