안녕하십니까, radiogroup 옆에 textview를 추가하고 싶습니다. 서비스 응답에 따라 xml을 사용하지 않고 radiogroup에 레이블을 추가해야합니다. 우리는 점점 radiGroup보기에있는 LinearLayout을 추가 할 때 최대 길이 라디오에 따라 어떤 상황에서 는radiogroup에 textview를 동적으로 추가하는 방법
는 []
final RadioGroup rg = new RadioGroup(this); //create the RadioGroup
rg.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
rg.setOrientation(RadioGroup.VERTICAL);//or RadioGroup.VERTICAL
rg.setGravity(Gravity.CENTER);
final RadioButton[] rb = new RadioButton[items_list.size()];
final CheckBox[] cb = new CheckBox[items_list.size()];
for (int i = 0; i < items_list.size(); i++) {
LinearLayout ll_orientaion = new LinearLayout(this);
ll_orientaion.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT, 2.0f));
ll_orientaion.setOrientation(LinearLayout.HORIZONTAL);
ll_orientaion.setBackgroundColor(getResources().getColor(R.color.white));
ll_orientaion.setWeightSum(2);
ll_orientaion.setGravity(Gravity.CENTER);
if (max == 1) {
rb[i] = new RadioButton(this);
rb[i].setText(pd.getName());
rb[i].setGravity(Gravity.CENTER);
ll_orientaion.addView(rb[i]);
if (pd.getSelected_status().equals("true")) {
rb[i].setChecked(true);
}
hashMap_rdlist.put(rb[i].getText().toString(), rdd);
rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
ProductOptions rd_getlist = new ProductOptions();
int checkedRadioButtonId = rg.getCheckedRadioButtonId();
RadioButton radioButton = (RadioButton) findViewById(checkedRadioButtonId);
// Toast.makeText(ProductOptionsActivity.this, radioButton.getText(), Toast.LENGTH_SHORT).show();
String rd_name = (String) radioButton.getText();
});
} else {
cb[i] = new CheckBox(this);
cb[i].setButtonTintList(ColorStateList.valueOf(getColor(R.color.colorPrimary)));
cb[i].setText(pd.getName());
cb[i].setGravity(Gravity.CENTER);
ll_orientaion.addView(cb[i]);
}
final int finalI = i;
cb[i].setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
ProductOptions rd_getlist = new ProductOptions();
String check_name = (String) cb[finalI].getText();
if (isChecked) {
check_count++;
} else {
check_count--;
}
}
});
}
// Log.d("checklist",""+productoptions_skuId);
TextView tv = new TextView(this);
LinearLayout.LayoutParams tv1 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, 1.0f);
tv.setLayoutParams(tv1);
tv1.weight = 2;
tv1.gravity = Gravity.CENTER;
tv.setText(pd.getSalePrice());
tv.setTextSize(14);
tv.setGravity(Gravity.END);
if (pd.getSalePrice().equals("0.0")) {
tv.setVisibility(View.INVISIBLE);
}
ll_orientaion.addView(tv);
rg.addView(ll_orientaion);
}
가장 큰 문제는, 완벽한 만의 RadioButton 행동이다
여기코드 아래에
rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {}
GUI하십시오, 즉 작동하지 우리 사전 감사합니다!
'RadioGroup'은 그 자신의 자식이거나'RadioButton'의 하위 클래스 인 경우에만 작동합니다. 'LinearLayout'을'RadioGroup' 자식으로 추가하는 것 같습니다. – Shaishav