今天学的是对开关的监听,两种开关ToggleButton和switch
<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"> <ToggleButton android:id="@+id/togglebutton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textOn="纵向排列" android:textOff="横向排列" android:checked="true" /> <Switch android:id="@+id/switcher" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textOn="纵向排列" android:textOff="横向排列" android:checked="true"/>
<LinearLayout android:id="@+id/test" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="测试按钮一" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="测试按钮二" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="测试按钮三" /> </LinearLayout> </LinearLayout>
通过开关控制三个按钮的是水平还是竖直布局,所以需要将三个按钮包裹起来,整体要用线性布局。有一个不懂的是为什么要用android:checked="true"?就是是否要被选中的意思。。。
package com.example.togglebutton; import android.app.Activity; import android.os.Bundle; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.LinearLayout; import android.widget.Switch; import android.widget.ToggleButton; public class MainActivity extends Activity { ToggleButton togglebutton; Switch switcher; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); togglebutton=(ToggleButton) findViewById(R.id.togglebutton); switcher=(Switch) findViewById(R.id.switcher); final LinearLayout test=(LinearLayout) findViewById(R.id.test); OnCheckedChangeListener listener=new OnCheckedChangeListener(){ @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // TODO Auto-generated method stub if(isChecked){ test.setOrientation(1);//竖直 }else{ test.setOrientation(0);//水平 } } }; togglebutton.setOnCheckedChangeListener(listener); switcher.setOnCheckedChangeListener(listener); } }
这个里面让我体会到一个重点就是数据域,和普通变量。。。
为什么要将togglebutton和swithcer作为数据域呢?为什么test这个不用作为数据域里的内容呢?
还有一个就是为什么test这个要用final呢?