2012-06-06 7 views
0

У меня есть несколько флажков, для которых я хочу использовать свои собственные отмеченные/непроверенные значки (png).Android: настройка стиля флажка динамически

Эти флажки создаются динамически во время выполнения. Как добавить иконки в исходный код java?

Спасибо за вашу помощь :)

Chris

+0

Вы пробовали вызова 3-аргумент [ 'CheckBox' ] (http://developer.android.com/reference/android/widget/CheckBox.html#CheckBox%28android.content.Context,%20android.util.AttributeSet ,% 20int% 29) конструктор? Рассматривая исходный код 'CheckBox', кажется, что вызов конструктора с 1 аргументом просто вызывает 3-аргумент с внутренним стилем:' this (context, null, com.android.internal.R.attr.checkboxStyle) ; '. Я бы сказал, что было бы разумно попробовать и передать свой собственный стиль в качестве третьего аргумента. –

ответ

3

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

       } 
      });  

    } 
} 
+0

используйте эту ссылку: http: //vimaltuts.com/android-tutorial-for-beginners/android-custom-checkbox –

+0

Ну, в этом случае существует фиксированное количество cbs. Но в моем случае число вычисляется во время выполнения. –

+0

вы можете использовать цикл, затем создать n число cbs. –

Смежные вопросы