2012-05-22 27 views
16

Có cách nào đơn giản để thêm dải phân cách giữa RadioButtons bên trong một RadioGroup không? Tôi đã thử sử dụng thuộc tính xml divider và dường như không hoạt động. Trong trường hợp nó có liên quan, RadioGroup trong bố cục của tôi không chứa bất kỳ chế độ xem con nào; Tôi đang thêm RadioButtons theo chương trình.Android radiogroup, dải phân cách giữa các nút vô tuyến

EDIT: Sự cố được giải quyết. Bạn có thể thêm chế độ xem bên cạnh RadioButton bên trong RadioGroup trong xml. Trong trường hợp của tôi, bạn cũng có thể làm điều đó theo lập trình, nhưng hãy cẩn thận về các thông số bố trí của bạn. Akki đã có ý tưởng đúng, và điều này đã làm việc cho tôi:

for (int i = 0; i < items.size(); i++) { 
    if (i > 0) { 
     // add a divider with height of 1 pixel 
     View v = new View(this); 
     v.setLayoutParams(new RadioGroup.LayoutParams(LayoutParams.MATCH_PARENT, 1)); 
     v.setBackgroundColor(android.R.color.darker_gray); 
     mRadioGroup.addView(v); 
    } 
    RadioButton rb = new RadioButton(this); 
    /* set other properties ... */ 

    mRadioGroup.addView(rb); 
} 
+0

Có thể hữu ích nếu bạn có thể cung cấp hình ảnh về những gì bạn đang cố gắng thực hiện. – mtmurdock

+4

nhóm radio có nguồn gốc từ bố cục tuyến tính để tạo đối tượng xem và thêm nó sau mỗi nút radio ngoại trừ nút radio cuối cùng. – Akram

+0

mtmurdock: Tôi chỉ cần một đường ngang mỏng giữa mỗi mục. Akki: Tôi đã nghĩ về điều đó, nhưng hy vọng có điều gì đó đơn giản hơn. Dường như đây là trường hợp sử dụng khá rõ ràng mà người ta mong đợi Google đã đưa ra các điều khoản cho nó trong khuôn khổ. – Karakuri

Trả lời

13

Dưới đây là một cách giải quyết:

Đầu tiên tạo một Shape drawable như chia của bạn. Dưới đây là ví dụ:

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle" > 
<solid 
    android:color="@color/white" /> 
<stroke 
    android:width="0.3dp" 
    android:color="@color/black" /> 
</shape> 

Đây chỉ là viền đen đơn giản. Đặt nó vào trong thư mục/drawable của bạn và đặt tên nó là custom_divider.xml.

Sau đó, chuyển đến bố cục sử dụng RadioGroup. Sử dụng ShapeDrawable làm hình nền cho mỗi RadioButton (s). Dưới đây là ví dụ:

<RadioGroup 
     android:id="@+id/radioGroup1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="10dp" 
     android:divider="@color/black" > 

     <RadioButton 
      android:id="@+id/radio0" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:background="@drawable/custom_radiogroup_divider" 
      android:checked="true" 
      android:text="RadioButton" /> 

     <RadioButton 
      android:id="@+id/radio1" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:background="@drawable/custom_radiogroup_divider" 
      android:text="RadioButton" /> 

     <RadioButton 
      android:id="@+id/radio2" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:background="@drawable/custom_radiogroup_divider" 
      android:text="RadioButton" /> 

    </RadioGroup> 

Bạn cũng có thể thêm ShapeDrawable vào RadioGroup của mình. Nó phụ thuộc vào bạn, tùy chỉnh nó nếu bạn cần. :)

Đây là ví dụ của tôi về RadioGroup có đường viền tùy chỉnh (có bán kính góc) và bộ chia tùy chỉnh ShapeDrawable (s). RadioGroup divider

6

Tạo hình drawable đại diện chia (Được gọi là "radio_group_divider"):

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <size android:width="12dp" /> 
    <solid android:color="@color/transparent" /> 
</shape> 

Sử dụng drawable này là "chia" trong RadioGroup:

<RadioGroup 
     ... 
     android:divider="@drawable/radio_group_divider" 
     android:showDividers="middle" 
     ...> 
</RadioGroup> 
14
<RadioGroup 
    android:id="@+id/location_radio_group" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:divider="?android:attr/dividerHorizontal" 
    android:showDividers="middle"> 
</RadioGroup> 

Điều đó sẽ làm việc cho bạn. Và tôi thực sự tò mò về cách bạn thêm chế độ xem vào Chế độ xem nhóm? Điều đó sẽ gây ra sự thừa nhận lớp, phải không?

Các vấn đề liên quan