我正在运行时构建布局,我必须为用户显示一个带有4个单选按钮的无线电组,但有时我应该用单选按钮显示一个编辑字段,这样用户就可以编写一些相关的东西了。编辑框中的单选按钮。 我希望编辑字段出现在单选按钮旁边。 我试图构建编辑字段,但它一直显示在无线电组下,如果我用编辑文本分隔线性布局中的一个按钮,它就会超出无线电组的范围。 这是构建无线电组的代码
RadioGroup radioGroup = new RadioGroup(context);
radioGroup.setContentDescription(id);
for (int i = 0; i < vector.size(); i++) {
RadioButton radioButton = new RadioButton(context);
radioButton.setTextColor(Color.BLACK);
radioButton.setText("" + vector.get(i).getQ_text());
radioButton.setContentDescription(vector.get(i).getA_id());
radioButton.setTextSize(20);
radioButton.setTextColor(Color.parseColor("#A5462E"));
radioGroup.addView(radioButton);
radioGroup.setPadding(20, 0, 0, 0);
如何在运行时构建编辑字段以显示在单选按钮旁边。
答案 0 :(得分:0)
我的建议是在xml文件中为RadioGroup
的每一行创建布局,如下所示:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RadioButton
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<EditText
android:id="@+id/edit_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="invisible"/>
</LinearLayout>
然后在你的循环中你可以膨胀这个布局并用它做你想做的事情:
final LinearLayout root = (LinearLayout) findViewById(R.id.root);
final RadioGroup radioGroup = new RadioGroup(this);
for (int i = 0; i < 3; i++) {
final LinearLayout item = (LinearLayout) LayoutInflater.from(this).inflate(R.layout.item_radio_button, null);
final RadioButton button = (RadioButton) item.findViewById(R.id.button);
final EditText editText = (EditText) item.findViewById(R.id.edit_text);
button.setText("Test");
// Your condition to show or not the editText
if (i % 2 == 0) {
editText.setVisibility(View.VISIBLE);
}
radioGroup.addView(item);
}
root.addView(radioGroup);