Android:RadioGroup 下嵌套布局中的 RadioButton 脱离组

标签 android android-layout

我正在尝试对属于 RadioGroup 的单选按钮进行一些合理的定位。我遇到了麻烦,因为我的 RadioGroup 位于布局设计的其余部分之上,然后我使用边距来插入按钮,这里的问题是这仅适用于一个或两个设备布局。当我发现我可以定义我的 RadioGroup 然后在下面放置一个 RelativeLayout 时,我以为我找到了金子,其中包含一个 RadioButtons,然后我再重复两次。这给了我想要的布局。问题是,当我运行代码时,RadioButtons 行为链接独立按钮 :(

那么两个问题,

  • 我可以将这些按钮链接回群组吗?

  • 是否有合适的方法能够独立于组定义 RadioGroup 单选按钮的布局。

我认为替代方案可能是独立的 RadioButtons 并使用代码来启用/禁用它们,但这确实会破坏 RadioGroup 的实用性。

谢谢。

如果你好奇的话,这是我的 XML 布局。

    <ScrollView android:id="@+id/scrollview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"

       android:layout_below="@id/HDDResultsBox"
        >   

    <RelativeLayout 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" 
    android:focusable="true" 
    android:focusableInTouchMode="true"
    android:windowSoftInputMode="stateHidden"
    > 


    <RadioGroup android:id="@+id/calcBy"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:focusable="true" 
        android:focusableInTouchMode="true"
        android:layout_below="@id/HDDResultsBox"

        >

  <RelativeLayout android:id="@+id/intervalBox"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:background="@drawable/backgroundbox"
       android:layout_margin="5dp"
       android:padding="5dp"


        >
          <TextView  android:id="@+id/intervalHeader"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Interval"
            android:gravity="left"
            android:textColor="#ffffff"
            android:textStyle="bold"
            android:layout_marginLeft="5dp"
            />    

         <TextView  android:id="@+id/intervalHelpText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Interval help text"
            android:gravity="left"
            android:textColor="#ffffff"
            android:textSize="8dp"
            android:layout_toRightOf="@id/intervalHeader"
            android:layout_marginLeft="10dp"
            /> 

           <LinearLayout  android:id="@+id/interval2ndBox"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_below="@id/intervalHeader"
            android:layout_marginLeft="10dp"
            >
                <RadioButton android:id="@+id/byInterval"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    />

                <EditText  android:id="@+id/intervalValue"
                    android:layout_width="75dp"
                    android:layout_height="40dp"
                    android:text="50"
                    android:textSize="14sp"
                    android:gravity="center"
                    android:inputType="number" 
                    android:layout_marginLeft="20dp"
                    />    

                <Spinner android:id="@+id/intervalType"
                    android:layout_width="match_parent"
                    android:layout_height="42dp"
                    android:drawSelectorOnTop="false"
                    android:layout_marginTop="1dp"
                    android:layout_marginLeft="10dp"
                    android:layout_weight="10"
               android:layout_marginRight="2dp"
                    /> 

              <SeekBar android:id="@+id/intervalSeek"
               android:layout_width="match_parent"
               android:layout_height="wrap_content"
               android:max="100"
               android:progress="50"
               android:layout_marginLeft="5dp"
               android:layout_marginRight="5dp"
               android:layout_marginTop="8dp"
               android:layout_weight="7"
           /> 
            </LinearLayout>  

        </RelativeLayout>


 <RelativeLayout android:id="@+id/recordBox"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:background="@drawable/backgroundbox"
       android:layout_margin="5dp"
       android:padding="5dp"


        >
          <TextView  android:id="@+id/recordHeader"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Record Duration"
            android:gravity="left"
            android:textColor="#ffffff"
            android:textStyle="bold"
            android:layout_marginLeft="5dp"
            />    

         <TextView  android:id="@+id/recordHelpText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Record help text"
            android:gravity="left"
            android:textColor="#ffffff"
            android:textSize="8dp"
            android:layout_toRightOf="@id/recordHeader"
            android:layout_marginLeft="10dp"
            /> 

           <LinearLayout  android:id="@+id/record2ndBox"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_below="@id/recordHeader"
            android:layout_marginLeft="10dp"
            >
                <RadioButton android:id="@+id/byrecord"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    />

                <EditText  android:id="@+id/recordValue"
                    android:layout_width="75dp"
                    android:layout_height="40dp"
                    android:text="50"
                    android:textSize="14sp"
                    android:gravity="center"
                    android:inputType="number" 
                    android:layout_marginLeft="20dp"
                    />    

                <Spinner android:id="@+id/recordType"
                    android:layout_width="match_parent"
                    android:layout_height="42dp"
                    android:drawSelectorOnTop="false"
                    android:layout_marginTop="1dp"
                    android:layout_marginLeft="10dp"
                    android:layout_weight="10"
               android:layout_marginRight="2dp"
                    /> 

              <SeekBar android:id="@+id/recordSeek"
               android:layout_width="match_parent"
               android:layout_height="wrap_content"
               android:max="100"
               android:progress="50"
               android:layout_marginLeft="5dp"
               android:layout_marginRight="5dp"
               android:layout_marginTop="8dp"
               android:layout_weight="7"
           /> 
            </LinearLayout>  

        </RelativeLayout>

 <RelativeLayout android:id="@+id/playBackBox"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:background="@drawable/backgroundbox"
       android:layout_margin="5dp"
       android:padding="5dp"


        >
          <TextView  android:id="@+id/playBackHeader"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Video Length"
            android:gravity="left"
            android:textColor="#ffffff"
            android:textStyle="bold"
            android:layout_marginLeft="5dp"
            />    

         <TextView  android:id="@+id/playBackHelpText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="playBack help text"
            android:gravity="left"
            android:textColor="#ffffff"
            android:textSize="8dp"
            android:layout_toRightOf="@id/playBackHeader"
            android:layout_marginLeft="10dp"
            /> 

           <LinearLayout  android:id="@+id/playBack2ndBox"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_below="@id/playBackHeader"
            android:layout_marginLeft="10dp"
            >
                <RadioButton android:id="@+id/byplayBack"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    />

                <EditText  android:id="@+id/playBackValue"
                    android:layout_width="75dp"
                    android:layout_height="40dp"
                    android:text="50"
                    android:textSize="14sp"
                    android:gravity="center"
                    android:inputType="number" 
                    android:layout_marginLeft="20dp"
                    />    

                <Spinner android:id="@+id/playBackType"
                    android:layout_width="match_parent"
                    android:layout_height="42dp"
                    android:drawSelectorOnTop="false"
                    android:layout_marginTop="1dp"
                    android:layout_marginLeft="10dp"
                    android:layout_weight="10"
               android:layout_marginRight="2dp"
                    /> 

              <SeekBar android:id="@+id/playBackSeek"
               android:layout_width="match_parent"
               android:layout_height="wrap_content"
               android:max="100"
               android:progress="50"
               android:layout_marginLeft="5dp"
               android:layout_marginRight="5dp"
               android:layout_marginTop="8dp"
               android:layout_weight="7"
           /> 
            </LinearLayout>  

        </RelativeLayout>    


    </RadioGroup>           
</RelativeLayout>
        </ScrollView>

最佳答案

在四处寻找解决方案后,看起来唯一的方法是使用单独的单选按钮,然后以编程方式控制那里的开/关状态。

关于Android:RadioGroup 下嵌套布局中的 RadioButton 脱离组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9851867/

相关文章:

android - 膨胀包含自己的 View 的自定义 View 时出现 StackOverflowError

android - 带有文本和图标的微调器

java - 适用于 Android 的 Gzip

android - 使用 Android SDK 我在我的 JPEG 中没有看到任何 EXIF

java - Android:创建新 Intent 时出现 NullPointerException

android - 使用长按 Home 键时,android 2.1 中 ActivityManger 中的错误

android - 页面上的自定义水平选择器

android - ScrollView中的最小高度fill_parent和高度wrap_content? (或者只是电子邮件应用程序编写布局的代码)

Android - PX 到 DP - 布局高度错误

Android - ListView - 按需调用 getView()