2012-06-09 57 views
3

我想顯示同一個無線電組的6個單選按鈕。但是,所有6個單選按鈕保持在同一條線上,並熄滅屏幕。如何以兩行顯示它們(每個3個單選按鈕)? 我嘗試了一切可能爲我(我是新的android)。單選按鈕多行

+0

'我嘗試了一切可能爲我「你有什麼嘗試?請解釋。 – ariefbayu

+0

@silent我把單選按鈕放在相對佈局中試試leftOf/rightOf,但按鈕消失了。因爲在radiogroup標籤內不允許佈局。如果我在兩個不同的radiogroups中劃分單選按鈕,它們將不在同一個radiogroup中。 試圖包裝內容,但它沒有奏效。 –

回答

4

從周圍搜索,似乎沒有做到這一點,因爲RadioGroup使用LinearLayout,它不包裝。由於單選按鈕必須是兒童直播組,所以您不能將子佈局添加到廣播組。這意味着你將不得不手動實現這種佈局行爲。兩種可能的選擇是:

  • 創建RadioGroup的副本以擴展不同的佈局,或者至少允許您動態控制它。
  • 實施您自己的自定義佈局來替換RadioGroup,以擴展您選擇的佈局,並實施OnClickListener。有一個很好的例子here
+0

感謝BD確認我實際得出的結論,但在我腦海中的某個地方,我有一個希望,那就是我一定有某種想法。 感謝@silent –

1

一個簡單的答案是將您的RadioGroup包裝在ScrollView中,以便用戶可以滾動到屏幕外按鈕(不是真正的優雅,但不是代碼密集型)。

+0

對於第一個版本,我將使用這個簡單的步驟。稍後我將創建自定義無線電控制。謝謝 –

+0

沒問題。樂於幫助。 – Barak

0

動態生成的marginTop和marginLeft,用於調整需要位於同一行的單選按鈕。首先,讓屏幕的寬度,設置的LayoutParams marginLeft一半的屏幕寬度,需要marginTop的高度,根據具體radiobutton.eg進行調整:

holder.question = (TextView) convertView.findViewById(R.id.topic_item_question); 
      holder.option = (RadioGroup) convertView.findViewById(R.id.topic_item_option); 
      holder.option1 = (RadioButton) convertView.findViewById(R.id.topic_item_option1); 
      holder.option2 = (RadioButton) convertView.findViewById(R.id.topic_item_option2); 

      //爲了能夠在一行顯示兩個radiobutton:獲取屏幕的寬度 
      WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); 
      int width = wm.getDefaultDisplay().getWidth();//左側設置的間距 
      int height = DensityDpToPx.dpToPx(context, 24);//處於第二個的高度間距 

      LinearLayout.LayoutParams params = (LayoutParams) holder.option2.getLayoutParams(); 
      params.setMargins(width/2, -height, 0, 0); 
      holder.option2.setLayoutParams(params); 

      holder.option3 = (RadioButton) convertView.findViewById(R.id.topic_item_option3); 
      holder.option4 = (RadioButton) convertView.findViewById(R.id.topic_item_option4); 

      LinearLayout.LayoutParams paramsTwo = (LayoutParams) holder.option4.getLayoutParams(); 
      paramsTwo.setMargins(width/2, -height, 0, 0); 
      holder.option4.setLayoutParams(paramsTwo);