生活随笔
收集整理的這篇文章主要介紹了
安卓天天练练(五)CompoundButton
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ToggleButton?讓我想起了從前jQuery還沒有取消toggle方法時是怎么偷懶的。。
注意:
- 如果LinearLayout,與RelativeLayout不同,必須有orientation。用可視化頂部的橫著隔開或者豎著隔開的方形按鈕也可以選擇,例如android:orientation="vertical"
- 三目運算符前面和js一樣,那個state是不需要額外帶括號的
- 按鈕右鍵點上去有Edit TextOff,TextOn
- 文字右鍵點上去的Edit Text可以新建string,填好String和R.string.之后自動生成string.xml到/values
- 圖片右鍵點上去有ScaleType可供選擇
- 如果AVD啟動黑屏,又沒有報錯,嘗試刪除舊的AVD新建后start再run as
package com.example.android_8_1;import android.app.Activity;
import android.os.Bundle;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ImageView;
import android.widget.ToggleButton;public class MainActivity
extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);ToggleButton tg =
(ToggleButton) findViewById(R.id.toggleButton1);tg.setOnCheckedChangeListener(new OnCheckedChangeListener() {// imported from android.widget.CompoundButton
@Overridepublic void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {// TODO Auto-generated method stub
setBulbState(isChecked);}});}public void setBulbState(
boolean state) {ImageView iv =
(ImageView) findViewById(R.id.imageView1);iv.setImageResource(state?
R.drawable.btn : R.drawable.btnhover);ToggleButton tg =
(ToggleButton) findViewById(R.id.toggleButton1);tg.setChecked(state);}} XML很簡單
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context="com.example.android_8_1.MainActivity" ><ImageViewandroid:id="@+id/imageView1"android:layout_width="match_parent"android:layout_height="wrap_content"android:scaleType="fitXY"android:src="@drawable/btn" /><ToggleButtonandroid:id="@+id/toggleButton1"android:layout_width="80dp"android:layout_height="40dp"android:layout_gravity="center_horizontal"android:text="ToggleButton"android:textOff="關燈"android:textOn="開燈" /></LinearLayout> 安卓自帶的機制很實用,此例結束。
另外,單選框可以用<RadioGroup></RadioGroup>包起來形成一組,實現單選排斥。
改成一組連動式CompoundButton
package com.example.android_8_1;import com.example.android_8_1.R.id;import android.app.Activity;
import android.os.Bundle;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.RadioButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ImageView;
import android.widget.ToggleButton;public class MainActivity
extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);ToggleButton tg =
(ToggleButton) findViewById(R.id.toggleButton1);tg.setOnCheckedChangeListener(new OnCheckedChangeListener() {// imported from android.widget.CompoundButton
@Overridepublic void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {// TODO Auto-generated method stub
setBulbState(isChecked);}});CheckBox cb =
(CheckBox) findViewById(R.id.checkBox1);cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {// TODO Auto-generated method stub
setBulbState(isChecked);}});RadioButton rb =
(RadioButton) findViewById(id.radioButton2);rb.setOnCheckedChangeListener(new OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {// TODO Auto-generated method stub
setBulbState(isChecked);}});}public void setBulbState(
boolean state) {ImageView iv =
(ImageView) findViewById(R.id.imageView1);iv.setImageResource(state ?
R.drawable.btn : R.drawable.btnhover);ToggleButton tg =
(ToggleButton) findViewById(R.id.toggleButton1);CheckBox cb =
(CheckBox) findViewById(R.id.checkBox1);tg.setText(state ?
R.string.onn : R.string.offn);cb.setText(state ?
R.string.offn : R.string.onn);tg.setChecked(state);cb.setChecked(state);RadioButton rb =
(RadioButton) findViewById(R.id.radioButton2);rb.setChecked(state);rb =
(RadioButton) findViewById(R.id.radioButton1);rb.setChecked(!
state);}} XML不變。需要注意的是,如果邏輯上貌似通順但是出現checkbox點下去沒反應,一定是黑白顛倒弄反鳥!
比如文字設為onn活著offn,checked(!state)在對radioButton1還是radioButton2。
轉載于:https://www.cnblogs.com/haimingpro/p/4671239.html
總結
以上是生活随笔為你收集整理的安卓天天练练(五)CompoundButton的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。