Android:无线组的自定义布局
我试图创建一个2x2单选按钮数组,但除了水平或垂直外,我不知道如何自定义布局。有什么想法吗 我只得到了Android:无线组的自定义布局,android,xml,eclipse,radio-button,android-radiogroup,Android,Xml,Eclipse,Radio Button,Android Radiogroup,我试图创建一个2x2单选按钮数组,但除了水平或垂直外,我不知道如何自定义布局。有什么想法吗 我只得到了 A B C D 及 但是我想要 A B C D 编辑: 我解决了这个问题。对于任何想知道的人,我设置了两个单独的无线电组(即一个带AB,一个带CD)。我为每个RadioButton设置onClickListener(),并在单击第一个RadioButton中的按钮时在第二个RadioButton上使用clearCheck(),反之亦然。如果这是您要问的问题,我会这样做。也许有更好的方法,但
A B C D
及
但是我想要
A B
C D
编辑:
我解决了这个问题。对于任何想知道的人,我设置了两个单独的无线电组(即一个带AB,一个带CD)。我为每个RadioButton设置onClickListener(),并在单击第一个RadioButton中的按钮时在第二个RadioButton上使用clearCheck(),反之亦然。如果这是您要问的问题,我会这样做。也许有更好的方法,但这对我来说已经足够好了
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/radioGroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="top|left">
<RadioButton
android:id="@+id/radio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/radioOneText" />
<RadioButton
android:id="@+id/radio2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/radioTwoText"
android:layout_toRightOf="@id/radio1"
android:layout_alignBaseline="@id/radio1"
android:layout_marginLeft="10dp" />
<RadioButton
android:id="@+id/radio3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/radioThreeText"
android:layout_below="@id/radio1"
android:layout_alignLeft="@id/radio1" />
<RadioButton
android:id="@+id/radio4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/radioFourText"
android:layout_below="@id/radio2"
android:layout_toRightOf="@id/radio3"
android:layout_alignBaseline="@id/radio3"
android:layout_alignLeft="@id/radio2" />
</RelativeLayout>
以上示例的更好解决方案。当我们必须在没有radiogroup的情况下使用单选按钮时,应使用此选项
/////////////////////////// for call setting rb ////////////////////////////////////////////////////
grbtn = (RadioButton) findViewById(R.id.grbtn);
vrbtn = (RadioButton) findViewById(R.id.vrbtn);
srbtn = (RadioButton) findViewById(R.id.srbtn);
arbtn = (RadioButton) findViewById(R.id.arbtn);
grbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
vrbtn.setChecked(false);
srbtn.setChecked(false);
arbtn.setChecked(false);
///////////////////////////////////////////////
}
});
vrbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
grbtn.setChecked(false);
srbtn.setChecked(false);
arbtn.setChecked(false);
///////////////////////////////////////////////
}
});
srbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
vrbtn.setChecked(false);
grbtn.setChecked(false);
arbtn.setChecked(false);
///////////////////////////////////////////////
}
});
arbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
vrbtn.setChecked(false);
srbtn.setChecked(false);
grbtn.setChecked(false);
///////////////////////////////////////////////
}
});
/////////////////////////////////////////////////////////////////////////////////////////////////////
`
通过使用
orientation=“horizontal”
将两个LinearLayout
包含到您的RadioGroup
中,您可以轻松完成此操作
您可以在您的RadioGroup中包含一个GridLayout,并将单选按钮添加到其中。您需要向我们提供更多信息,而不是答案。您想要的图像、您尝试过的布局以及外观,和/或其他任何内容。也许能找到你想要的。可能是
RelativeLayout
、TableLayout
或GridView
?但当选择一个按钮时,这不会取消选择其他按钮。在这里,我添加了一个代码,当您按下另一个单选按钮时,它会选择当前单击的按钮并选择您想要的按钮。
package com.example.breakable;
import android.os.*;
import android.app.*;
import android.view.View;
import android.widget.*;
public class MainActivity extends Activity
{
RadioButton radioOne;
RadioButton radioTwo;
RadioButton radioThree;
RadioButton radioFour;
@Override
public void onCreate(Bundle icicle)
{
super.onCreate(icicle);
setContentView(R.layout.main);
radioOne = (RadioButton)findViewById(R.id.radio1);
radioTwo = (RadioButton)findViewById(R.id.radio2);
radioThree = (RadioButton)findViewById(R.id.radio3);
radioFour = (RadioButton)findViewById(R.id.radio4);
radioOne.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (radioTwo.isChecked()){
radioTwo.setChecked(false);
radioOne.setChecked(true);
} else if (radioThree.isChecked()) {
radioThree.setChecked(false);
radioOne.setChecked(true);
} else if (radioFour.isChecked()) {
radioFour.setChecked(false);
radioOne.setChecked(true);
} else {
radioOne.setChecked(true);
}
}
});
radioTwo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (radioOne.isChecked()){
radioOne.setChecked(false);
radioTwo.setChecked(true);
} else if (radioThree.isChecked()) {
radioThree.setChecked(false);
radioTwo.setChecked(true);
} else if (radioFour.isChecked()) {
radioFour.setChecked(false);
radioTwo.setChecked(true);
} else {
radioTwo.setChecked(true);
}
}
});
radioThree.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (radioOne.isChecked()){
radioOne.setChecked(false);
radioThree.setChecked(true);
} else if (radioTwo.isChecked()) {
radioTwo.setChecked(false);
radioThree.setChecked(true);
} else if (radioFour.isChecked()) {
radioFour.setChecked(false);
radioThree.setChecked(true);
} else {
radioThree.setChecked(true);
}
}
});
radioFour.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (radioOne.isChecked()){
radioOne.setChecked(false);
radioFour.setChecked(true);
} else if (radioTwo.isChecked()) {
radioTwo.setChecked(false);
radioFour.setChecked(true);
} else if (radioThree.isChecked()) {
radioThree.setChecked(false);
radioFour.setChecked(true);
} else {
radioFour.setChecked(true);
}
}
});
}
}
/////////////////////////// for call setting rb ////////////////////////////////////////////////////
grbtn = (RadioButton) findViewById(R.id.grbtn);
vrbtn = (RadioButton) findViewById(R.id.vrbtn);
srbtn = (RadioButton) findViewById(R.id.srbtn);
arbtn = (RadioButton) findViewById(R.id.arbtn);
grbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
vrbtn.setChecked(false);
srbtn.setChecked(false);
arbtn.setChecked(false);
///////////////////////////////////////////////
}
});
vrbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
grbtn.setChecked(false);
srbtn.setChecked(false);
arbtn.setChecked(false);
///////////////////////////////////////////////
}
});
srbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
vrbtn.setChecked(false);
grbtn.setChecked(false);
arbtn.setChecked(false);
///////////////////////////////////////////////
}
});
arbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
vrbtn.setChecked(false);
srbtn.setChecked(false);
grbtn.setChecked(false);
///////////////////////////////////////////////
}
});
/////////////////////////////////////////////////////////////////////////////////////////////////////
`
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAllCaps="true"
android:text="18-24"
/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAllCaps="true"
android:text="36-45"
/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAllCaps="true"
android:text="25-35"
/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAllCaps="true"
android:text=">45"
/>
</LinearLayout>