安卓毎日練習(五)CompoundButton
12639 ワード
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 を再起動します.
XMLは簡単です
アンドロイドが持参したメカニズムは実用的で、この例は終わります.
また、ラジオボックスは、 でグループ化され、ラジオ反発を実現することができる.
一連の連動型ComponentButtonに変更
XMLは変わりません.注意しなければならないのは、論理的には順調に見えるがcheckbox点が現れて反応しなければ、白黒が逆さまになって鳥をいじるに違いない.
例えば文字はonnが生きているoffnとして、checked(!state)はradioButton 1に対してまだradioButton 2に対しています.
注意:
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 {
@Override
protected 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
@Override
public 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" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="fitXY"
android:src="@drawable/btn" />
<ToggleButton
android:id="@+id/toggleButton1"
android:layout_width="80dp"
android:layout_height="40dp"
android:layout_gravity="center_horizontal"
android:text="ToggleButton"
android:textOff=" "
android:textOn=" " />
</LinearLayout>
アンドロイドが持参したメカニズムは実用的で、この例は終わります.
また、ラジオボックスは、
一連の連動型ComponentButtonに変更
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 {
@Override
protected 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
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
// TODO Auto-generated method stub
setBulbState(isChecked);
}
});
CheckBox cb = (CheckBox) findViewById(R.id.checkBox1);
cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
// TODO Auto-generated method stub
setBulbState(isChecked);
}
});
RadioButton rb = (RadioButton) findViewById(id.radioButton2);
rb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public 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)はradioButton 1に対してまだradioButton 2に対しています.