0

我想用单选按钮显示图像并用单选组显示它,因为用户可以通过阅读文本和查看图像来选择选项。我怎样才能做到这一点?

这是创建单选按钮和动态图像视图的代码,但是当我单击单选按钮选择它时,这些是在单选组中创建的,它显示错误,因为图像视图无法转换为单选按钮,这使得图像视图作为广播组的孩子,它也不起作用,但表现得很完美。

public RadioGroup showNationalCan(RadioGroup rg,Context context,ImageView iv,String voterNA){

    //candidate address  as punjab kpk etc

    if(conn==null){

    }
    try{
        RadioButton rb;
        Statement st=conn.createStatement();
        ResultSet rs=st.executeQuery("select * from AM_NATIONAL where ca_na=N'"+voterNA+"'");
        while (rs.next()) {
            rb=new RadioButton(context);
            rb.setTextColor(Color.BLACK);
            rb.setId(rs.getInt(1));
            rb.setText(rs.getString(2)+"\n"+rs.getString(3)+"\n");

            iv=new ImageView(context);
            byte[] photo=rs.getBytes(4);
            Bitmap bitmap;
            bitmap=BitmapFactory.decodeByteArray(photo, 0, photo.length);
            iv.setImageBitmap(bitmap);
            iv.setEnabled(false);


            rg.addView(iv);
            rg.addView(rb);
        }
        rs.close();
        st.close();

    } catch (SQLException e){
        e.printStackTrace();
    }
    return rg;
}
4

2 回答 2

3

您可以通过 drawableRight 属性设置图像。您将从 think link 获得更多详细信息。

http://developer.android.com/reference/android/widget/TextView.html#attr_android:drawableRight

<RadioButton
        android:id="@+id/radio0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="true"
        android:drawableRight="@drawable/ic_launcher"
        android:text="A" >
    </RadioButton>

您可以使用它来动态添加单选按钮。

RadioGroup rgp= (RadioGroup) findViewById(R.id.radiogroup);
        RadioGroup.LayoutParams rprms;

        for(int i=0;i<3;i++){
              RadioButton radioButton = new RadioButton(this);
              radioButton.setText("new"+i);
              radioButton.setId(i);
              radioButton.setChecked(true);
              radioButton.setCompoundDrawables(drwable_left, drwable_top, drwable_right,                 drwable_bottom);
              rprms= new RadioGroup.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
              rgp.addView(radioButton, rprms);
        } 

您可以在 setCompoundDrawables 中设置位图

setCompoundDrawables(new BitmapDrawable(your_left_bitmap), new BitmapDrawable(your_top_bitmap), new BitmapDrawable(your_right_bitmap), new BitmapDrawable(your_bottom_bitmap));

更新 :

 Bitmap drawable = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);

              radioButton.setCompoundDrawables(new BitmapDrawable(drawable), new BitmapDrawable(drawable), new BitmapDrawable(drawable), new BitmapDrawable(drawable));
于 2014-09-02T14:10:34.400 回答
0

这是我自己的答案,现在绝对完美。我在这里回答它是因为其他人能够做到这一点并且能够直接从外部数据库(如 SQL)设置图像。

rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                // TODO Auto-generated method stub
                for(int i=0; i<rg.getChildCount();i++)
                {
                    RadioButton rbtn=(RadioButton)rg.getChildAt(i+1);
                    if(rbtn.getId()==checkedId)
                    {
                        serial=rbtn.getId();
                        flag=true;
                        return;
                    }
                    else
                    {
                        rbtn.setChecked(false);
                    }
                }

            }
        });

问题在于,单选组作为子项在其中具有图像视图,并且不会将其作为单选按钮单击。我只是用 i+1 增加 i ,因为它每次都会获得单选按钮。

于 2014-09-03T11:52:55.713 回答