我想創建一個包含RadioGroup
的自定義View
。在RadioGroup
內部,我想要設置RadioButtons
,以便第一個RadioButton
位於左上方,第二個位於下方,第一個位於右側第三位,下方位於第四位。換句話說,我想創建一個組,其中的單選按鈕排列在一個正方形中。我認爲如果我將組的方向設置爲垂直,那麼所有的單選按鈕都將處於一條直線上。另一方面,如果我將方向設置爲水平方向,那麼再次,這些單選按鈕將全部位於一條直線上,並呈水平狀態。有沒有辦法做我想做的事情,還是我被迫設置了兩個單獨的RadioGroups
,都是水平定位?以編程方式設置RadioGroup
回答
嘗試處理RadioButtons
而不使用RadioGroup
。
接通個人RadioButtons
並將其保存在ArrayList<RadioButton>
中。
List<RadioButton> radioButtons = new ArrayList<RadioButton>();
radioButtons.add((RadioButton)findViewById(R.id.button1));
radioButtons.add((RadioButton)findViewById(R.id.button2));
radioButtons.add((RadioButton)findViewById(R.id.button3));
etc.
每個RadioButton
設置一個OnCheckedChangeListener
。
for (RadioButton button : radioButtons){
button.setOnCheckedChangeListener(new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) processRadioButtonClick(buttonView);
}
});
}
然後創建一個方法來取消選中未選中的RadioButtons
。
private void processRadioButtonClick(CompoundButton buttonView){
for (RadioButton button : radioButtons){
if (button != buttonView) button.setChecked(false);
}
}
使用這種方法,RadioButtons
可以位於XML佈局的任何位置。
真棒回答馬特,你能解釋如何獲得選定單選按鈕的ID,我試過但我失敗了。等待您的寶貴答案。謝謝。 – 2017-05-26 06:55:31
您應該從RadioGroup繼承並覆蓋onLayout()方法。
謝謝!你有沒有一個例子,說明我想要做的重寫會是什麼樣子? – LuxuryMode 2011-06-13 15:19:39
你可以想出如何從Roman Nurik的儀表板視圖實現onLayout:https://gist.github.com/882650 – woodshy 2011-06-13 15:23:24
- 1. 以編程方式設置iPhone設置
- 2. 以編程方式配置IPhone設置
- 3. trigger.io以編程方式設置方向
- 4. 以編程方式設置Eclipse設置編輯器位置
- 5. 以編程方式設置php.ini值
- 6. 如何以編程方式設置masterpage?
- 7. 以編程方式設置LayoutParams
- 8. 以編程方式設置LayoutParams.BELOW
- 9. 以編程方式設置WPF屬性
- 10. 以編程方式設置寬度Imageview
- 11. 以編程方式設置Wordpress語言?
- 12. android-以編程方式設置LayoutParams
- 13. 以編程方式設置分隔線
- 14. 以編程方式設置timepicker值
- 15. 以編程方式設置itemcommand事件
- 16. 以編程方式設置OnSelectedIndexChanged ddl
- 17. 以編程方式設置圖層
- 18. 更改IE設置以編程方式
- 19. 以編程方式設置NSIndexPath
- 20. 以編程方式設置android:showAsAction =「ifRoom | withText」
- 21. 以編程方式定義設置
- 22. 以編程方式設置ListView的dataSource
- 23. 以編程方式設置IBInspectable
- 24. 以編程方式設置headerviews
- 25. 以編程方式設置AWS區域
- 26. 以編程方式刪除Web.config設置
- 27. KineticJS以編程方式設置筆劃
- 28. 如何以編程方式設置layout_margin?
- 29. ASP.NET MVC6:以編程方式設置webroot
- 30. 以編程方式設置複選框
您可以使用RelativeLayout而不是LinearLayout – Pratik 2011-06-13 14:53:52
@Pratik會有幫助嗎?這將幫助我建立一個相對於別的東西的組,但是相對於彼此的按鈕又如何呢? – LuxuryMode 2011-06-13 15:03:37