【问题标题】:Android: Customizing style of a checkbox dynamicallyAndroid:动态自定义复选框的样式
【发布时间】:2012-06-06 09:31:10
【问题描述】:

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

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

感谢您的帮助:)

克里斯

【问题讨论】:

  • 您是否尝试过调用 3 参数 CheckBox 构造函数?查看CheckBox 的源代码,似乎调用1 参数构造函数只是调用具有内部样式的3 参数构造函数:this(context, null, com.android.internal.R.attr.checkboxStyle);。我想说尝试将自己的风格作为第三个参数传递是有意义的。

标签: android checkbox runtime customization


【解决方案1】:

main.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();

                }
            });      

    }
}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2011-02-07
  • 1970-01-01
  • 2017-10-28
  • 1970-01-01
  • 1970-01-01
  • 2020-04-18
  • 2011-06-07
相关资源
最近更新 更多