您的位置:首页 > 移动开发 > Android开发

Android学习精要-CheckedTextView控件

2016-08-11 09:09 393 查看
CheckedTextView控件

在Android技术中实现打勾的checked效果其实还有另外一个控件也可以实现,它就是CheckedTextView控件。
新建名称为android2的Android项目,更改布局文件main.xml的代码如下:

<?xml version="1.0" encoding="utf-8"?>

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"

        android:id="@+id/scrollView1" android:layout_width="match_parent"

        android:layout_height="wrap_content">

        <LinearLayout android:padding="10px" android:orientation="vertical"

            android:layout_width="fill_parent" android:layout_height="fill_parent">

            <CheckedTextView android:tag="a1" android:id="@+id/checkedTextView1"

                android:layout_width="fill_parent" android:layout_height="wrap_content"

                android:checkMark="?android:attr/listChoiceIndicatorMultiple"

                android:text="checkedTextView1" />

            <CheckedTextView android:tag="a2" android:id="@+id/checkedTextView2"

                android:layout_width="fill_parent" android:layout_height="wrap_content"

                android:checkMark="?android:attr/listChoiceIndicatorMultiple"

                android:text="checkedTextView2" />

            <CheckedTextView android:tag="a3" android:id="@+id/checkedTextView3"

                android:layout_width="fill_parent" android:layout_height="wrap_content"

                android:checkMark="?android:attr/listChoiceIndicatorMultiple"

                android:text="checkedTextView4" />

            <CheckedTextView android:tag="a4" android:id="@+id/checkedTextView4"

                android:layout_width="fill_parent" android:layout_height="wrap_content"

                android:checkMark="?android:attr/listChoiceIndicatorMultiple"

                android:text="checkedTextView5" />

            <CheckedTextView android:tag="a5" android:id="@+id/checkedTextView5"

                android:layout_width="fill_parent" android:layout_height="wrap_content"

                android:checkMark="?android:attr/listChoiceIndicatorMultiple"

                android:text="checkedTextView6" />

            <Button android:text="Button" android:id="@+id/button1"

                android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>

            <CheckedTextView android:tag="A" android:id="@+id/checkedTextViewa"

                android:layout_width="fill_parent" android:layout_height="wrap_content"

                android:checkMark="?android:attr/listChoiceIndicatorSingle"

                android:text="checkedTextViewa" />

            <CheckedTextView android:tag="B" android:id="@+id/checkedTextViewb"

                android:layout_width="fill_parent" android:layout_height="wrap_content"

                android:checkMark="?android:attr/listChoiceIndicatorSingle"

                android:text="checkedTextViewb" />

            <CheckedTextView android:tag="C" android:id="@+id/checkedTextViewc"

                android:layout_width="fill_parent" android:layout_height="wrap_content"

                android:checkMark="?android:attr/listChoiceIndicatorSingle"

                android:text="checkedTextViewc" />

            <CheckedTextView android:tag="D" android:id="@+id/checkedTextViewd"

                android:layout_width="fill_parent" android:layout_height="wrap_content"

                android:checkMark="?android:attr/listChoiceIndicatorSingle"

                android:text="checkedTextViewd" />

            <Button android:text="Button" android:id="@+id/button2"

                android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>

        </LinearLayout>

    </ScrollView>

由于本示例的控件比较多,为了能全部显示它们,所以用了带滚动条效果的控件。

文件Main.java的代码如下:  

public class Main extends Activity {  

    private CheckedTextView checkedTextViewMul1;  

    private CheckedTextView checkedTextViewMul2;  

    private CheckedTextView checkedTextViewMul3;  

    private CheckedTextView checkedTextViewMul4;  

    private CheckedTextView checkedTextViewMul5;  

    private CheckedTextView checkedTextViewSinglea;  

    private CheckedTextView checkedTextViewSingleb;  

    private CheckedTextView checkedTextViewSinglec;  

    private CheckedTextView checkedTextViewSingled;  

    private Button getMulCheckedTextValue;  

    private Button getSingleCheckedTextValue;  

    private ArrayList<Integer> mulCheckedTextViewIdArray = new ArrayList();  

    private ArrayList<Integer> singleCheckedTextViewIdArray = new ArrayList();  

    @Override  

    public void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

        setContentView(R.layout.main);  

        getMulCheckedTextValue = (Button) this.findViewById(R.id.button1);  

        getSingleCheckedTextValue = (Button) this.findViewById(R.id.button2);  

        checkedTextViewMul1 = (CheckedTextView) this  

                .findViewById(R.id.checkedTextView1);  

        checkedTextViewMul1.setChecked(true);  

        checkedTextViewMul2 = (CheckedTextView) this  

                .findViewById(R.id.checkedTextView2);  

        checkedTextViewMul3 = (CheckedTextView) this  

                .findViewById(R.id.checkedTextView3);  

        checkedTextViewMul3.setChecked(true);  

        checkedTextViewMul4 = (CheckedTextView) this  

                .findViewById(R.id.checkedTextView4);  

        checkedTextViewMul5 = (CheckedTextView) this  

                .findViewById(R.id.checkedTextView5);  

        checkedTextViewMul5.setChecked(true);  

        mulCheckedTextViewIdArray.add(checkedTextViewMul1.getId());  

        mulCheckedTextViewIdArray.add(checkedTextViewMul2.getId());  

        mulCheckedTextViewIdArray.add(checkedTextViewMul3.getId());  

        mulCheckedTextViewIdArray.add(checkedTextViewMul4.getId());  

        mulCheckedTextViewIdArray.add(checkedTextViewMul5.getId());  

        OnClickListener checkedTextViewMulListenerRef = new OnClickListener() {  

            public void onClick(View arg0) {  

                ((CheckedTextView) arg0).toggle();  

            }  

        };  

        checkedTextViewMul1.setOnClickListener(checkedTextViewMulListenerRef);  

        checkedTextViewMul2.setOnClickListener(checkedTextViewMulListenerRef);  

        checkedTextViewMul3.setOnClickListener(checkedTextViewMulListenerRef);  

        checkedTextViewMul4.setOnClickListener(checkedTextViewMulListenerRef);  

        checkedTextViewMul5.setOnClickListener(checkedTextViewMulListenerRef);  

        getMulCheckedTextValue.setOnClickListener(new OnClickListener() {  

            public void onClick(View arg0) {  

                for (int i = 0; i < mulCheckedTextViewIdArray.size(); i++) {  

                    CheckedTextView findCheckedTextViewRef = (CheckedTextView) Main.this  

                            .findViewById(mulCheckedTextViewIdArray.get(i));  

                    if (findCheckedTextViewRef.isChecked() == true) {  

                        Log.v("打勾的checkbox值是", ""  

                                + findCheckedTextViewRef.getTag());  

                    }  

                }  

            }  

        });  

        checkedTextViewSinglea = (CheckedTextView) this  

                .findViewById(R.id.checkedTextViewa);  

        checkedTextViewSingleb = (CheckedTextView) this  

                .findViewById(R.id.checkedTextViewb);  

        checkedTextViewSinglec = (CheckedTextView) this  

                .findViewById(R.id.checkedTextViewc);  

        checkedTextViewSingled = (CheckedTextView) this  

                .findViewById(R.id.checkedTextViewd);  

        singleCheckedTextViewIdArray.add(checkedTextViewSinglea.getId());  

        singleCheckedTextViewIdArray.add(checkedTextViewSingleb.getId());  

        singleCheckedTextViewIdArray.add(checkedTextViewSinglec.getId());  

        singleCheckedTextViewIdArray.add(checkedTextViewSingled.getId());  

        OnClickListener checkedTextViewSinglelListenerRef = new OnClickListener() {  

            public void onClick(View arg0) {  

                for (int i = 0; i < singleCheckedTextViewIdArray.size(); i++) {  

                    if (singleCheckedTextViewIdArray.get(i).intValue() != ((CheckedTextView) arg0)  

                            .getId()) {  

                        ((CheckedTextView) Main.this  

                                .findViewById(singleCheckedTextViewIdArray  

                                        .get(i))).setChecked(false);  

                    } else {  

                        ((CheckedTextView) Main.this  

                                .findViewById(singleCheckedTextViewIdArray  

                                        .get(i))).setChecked(true);  

                    }  

                }  

            }  

        };  

        checkedTextViewSinglea  

                .setOnClickListener(checkedTextViewSinglelListenerRef);  

        checkedTextViewSingleb  

                .setOnClickListener(checkedTextViewSinglelListenerRef);  

        checkedTextViewSinglec  

                .setOnClickListener(checkedTextViewSinglelListenerRef);  

        checkedTextViewSingled  

                .setOnClickListener(checkedTextViewSinglelListenerRef);  

        getSingleCheckedTextValue.setOnClickListener(new OnClickListener() {  

            public void onClick(View arg0) {  

                for (int i = 0; i < singleCheckedTextViewIdArray.size(); i++) {  

                    CheckedTextView eachCheckedTextViewRef = ((CheckedTextView) Main.this  

                            .findViewById(singleCheckedTextViewIdArray.get(i)));  

                    if (eachCheckedTextViewRef.isChecked() == true) {  

                        Log.v("单选选中了:", ""  

                                + eachCheckedTextViewRef.getTag().toString());  

                    }  

                }  

            }  

        });  

    }  



CheckedTextView控件

程序初始运行效果如图3.19所示。

将多选控件的状态改成如图3.20所示。





图3.19  初始运行效果





图3.20  更变checked状态后界面

单击上方的Button按钮取出多选CheckedTextView控件的状态值,如图3.21所示。再把单选的状态改成如图3.22所示。





图3.21  第1个按钮按下的效果





图3.22  答案c被选中





图3.23  单选结果打印
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: