水平方向的Android单选按钮 - 焦点无法正常工作

时间:2016-05-23 19:11:04

标签: android android-edittext focus radio-group

我的单选按钮焦点有问题。另外我知道有很多与类似主题相关的问题,但没有一个涉及单选按钮(主要是微调器有问题)。

让我解释一下:

我有:editText1,editText2,带有两个按钮的水平广播组,之后是更多的editText框。

当我想通过键入文本并转到下一个字段来填充所有信息时出现问题。

当我来到单选按钮1时,我可以使用setOnEditorActionListener轻松请求焦点。但在那之后,我无法请求第二个单选按钮(右侧)的焦点。 键盘只是跳过它,并允许我在无线电组后填充edittext。

有不同的提案,但它们都不符合我的需求。

我试过了: - setOnActionEditor(actionId总是得0) - onKeyListener - 在触摸模式下请求焦点

因此,总结一下:为什么水平放射性组不允许无线电按钮获得焦点?这很奇怪,我尝试了很多东西。

对于长篇文章,我很抱歉,我想要准确。

谢谢!

以下是xml的一部分:

    <EditText
        android:id="@+id/editTextSurname"
        android:layout_width="200dp"
        android:layout_height="40dp"
        android:inputType="textPersonName" />


    <EditText
        android:id="@+id/editTextName"
        android:layout_width="200dp"
        android:layout_height="40dp"
        android:layout_below="@id/editTextSurname"
        android:layout_marginTop="5dp"
        android:inputType="textPersonName" />

    <RadioGroup
        android:id="@+id/gendersRadioGroup"
        android:layout_width="200dp"
        android:layout_marginTop="8dp"
        android:layout_marginBottom="8dp"
        android:layout_height="wrap_content"
        android:layout_below="@+id/editTextName"
        android:focusable="true"
        android:orientation="horizontal"
        android:focusableInTouchMode="true"
        android:singleLine="true"
        android:textSize="12sp">

        <RadioButton
            android:id="@+id/maleRadioButton"
            android:layout_width="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_height="@dimen/activity_profile_edittext_height"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:text="@string/male"
            android:textColor="@drawable/radiobutton_selector" />

        <RadioButton
            android:id="@+id/femaleRadioButton"
            android:layout_width="wrap_content"
            android:layout_marginStart="20dp"
            android:layout_height="@dimen/activity_profile_edittext_height"
            android:layout_gravity="center_vertical"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:text="@string/female"
            android:textColor="@drawable/radiobutton_selector" />
    </RadioGroup>

    <EditText
        android:id="@+id/dateEditText"
        android:layout_width="110dp"
        android:layout_height="40dp"
        android:layout_below="@+id/gendersRadioGroup"
        android:inputType="date" />

2 个答案:

答案 0 :(得分:1)

这对我有用

radioGroup.setFocusable(true);
radioGroup.setFocusableInTouchMode(true);

下面的完整代码

    RadioGroup radioGroup = new RadioGroup(context);
    radioGroup.setOrientation(RadioGroup.VERTICAL);

    radioGroup.setFocusable(true);
    radioGroup.setFocusableInTouchMode(true);

for (int index = 0; index < choices.length; index++) {
            RadioButton radioButton = new RadioButton(context);
            radioButton.setText(choices[index].trim());
            radioButton.setId(index);

            radioGroup.addView(radioButton);
        }

答案 1 :(得分:0)

您可以在java文件中使用此代码:

RadioButton radioButton = (RadioButton) findViewById(R.id.maleRadioButton);
radioButton.setFocusable(true);
radioButton.setFocusableInTouchMode(true);