0

我有几个复选框,我想使用我自己的选中/未选中图标 (png)。

这些复选框是在运行时动态创建的。如何在 java 源代码中添加我的图标?

谢谢你的帮助 :)

克里斯

4

1 回答 1

3

主要的.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:background="#555555" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/options"
        android:textSize="10pt"
        android:typeface="serif"
        android:textStyle="bold"
        android:paddingTop="10dp"
        android:paddingBottom="10dp"
        />

    <CheckBox
        android:id="@+id/blue_switch"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:typeface="serif"
        android:textStyle="bold"

        android:text="@string/bluetooth"   
        />

    <CheckBox
        android:id="@+id/wifi_switch"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:typeface="serif"
        android:textStyle="bold"

        android:text="@string/wifi"       
        />

    <CheckBox
        android:id="@+id/silent_switch"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/silent"
        android:typeface="serif"
        android:textStyle="bold"       
        android:button="@drawable/box"/>   

    <CheckBox
        android:id="@+id/general_switch"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/general"
        android:typeface="serif"
        android:textStyle="bold"       
        android:button="@drawable/box"/>

     <CheckBox
        android:id="@+id/mobile_data_switch"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/mobile_data"
        android:typeface="serif"
        android:textStyle="bold"       
        android:paddingLeft="80dp"       
        android:button="@drawable/switchbox"/>

    <CheckBox
        android:id="@+id/power_switch"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/power_saver_mode"
        android:typeface="serif"
        android:textStyle="bold"       
        android:paddingLeft="80dp"
        android:button="@drawable/switchbox"/>

</LinearLayout>

活动类:

package com.vimal.android.CustomCheckBox;

import android.app.Activity;
import android.os.Bundle;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.Toast;
import android.widget.CompoundButton.OnCheckedChangeListener;

public class CustomCheckBoxActivity extends Activity {
    private CheckBox blueSwitch;
    private CheckBox wifiSwitch;
    private CheckBox silentSwitch;
    private CheckBox generalSwitch;
    private CheckBox mobileDataSwitch;
    private CheckBox powerSwitch;
    String msg="";

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        blueSwitch=(CheckBox) findViewById(R.id.blue_switch);
        wifiSwitch=(CheckBox) findViewById(R.id.wifi_switch);
        silentSwitch=(CheckBox) findViewById(R.id.silent_switch);
        generalSwitch=(CheckBox) findViewById(R.id.general_switch);
        mobileDataSwitch=(CheckBox) findViewById(R.id.mobile_data_switch);
        powerSwitch=(CheckBox) findViewById(R.id.power_switch);

        setListener();
    }

    private void setListener() {

            blueSwitch.setOnCheckedChangeListener(new OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                        msg="BlueTooth is Switched OFF";
                        if(isChecked){
                            msg="BlueTooth is Switched ON";
                        }

                        Toast.makeText(CustomCheckBoxActivity.this, msg ,Toast.LENGTH_SHORT).show();                        
                }
            });

            wifiSwitch.setOnCheckedChangeListener(new OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                        msg="Wifi is Switched OFF";
                        if(isChecked){
                            msg="Wifi is Switched ON";
                        }

                        Toast.makeText(CustomCheckBoxActivity.this, msg ,Toast.LENGTH_SHORT).show();                        
                }
            });

            silentSwitch.setOnCheckedChangeListener(new OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                        msg="Silent Mode is Switched OFF";
                        if(isChecked){
                            msg="Silent Mode is Switched ON";
                        }

                        Toast.makeText(CustomCheckBoxActivity.this, msg ,Toast.LENGTH_SHORT).show();                        
                }
            });

            generalSwitch.setOnCheckedChangeListener(new OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                        msg="General Mode is Switched OFF";
                        if(isChecked){
                            msg="General Mode is Switched ON";
                        }

                        Toast.makeText(CustomCheckBoxActivity.this, msg ,Toast.LENGTH_SHORT).show();                        
                }
            });

            mobileDataSwitch.setOnCheckedChangeListener(new OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                        msg="Mobile Data is Switched OFF";
                        if(isChecked){
                            msg="Mobile Data is Switched ON";
                        }

                        Toast.makeText(CustomCheckBoxActivity.this, msg ,Toast.LENGTH_SHORT).show();                    
                }
            });

            powerSwitch.setOnCheckedChangeListener(new OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                        msg="PowerSaver Mode is Switched OFF";
                        if(isChecked){
                            msg="PowerSaver Mode is Switched ON";
                        }

                        Toast.makeText(CustomCheckBoxActivity.this, msg ,Toast.LENGTH_SHORT).show();

                }
            });      

    }
}
于 2012-06-06T09:37:36.587 回答