Android ToggleButton 示例
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/21277490/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Example on ToggleButton
提问by Durga
I am developing an application using a toggle button, I entered 1 or 0 in EditText
. When button is clicked, the toggle button has to change if I enter 1 the toggle button shows TOGGLE ON
, if I enter 0 the toggle button has to show TOGGLE OFF
. I am unable to get toggle values when the button is clicked.
我正在使用切换按钮开发应用程序,我在EditText
. 单击按钮时,切换按钮必须更改,如果我输入 1 切换按钮显示TOGGLE ON
,如果我输入 0 切换按钮必须显示TOGGLE OFF
。单击按钮时,我无法获得切换值。
My code is:
我的代码是:
public class MainActivity extends Activity {
String editString="";
Button btn;
EditText ed;
ToggleButton toggle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button)findViewById(R.id.btn);
ed = (EditText)findViewById(R.id.ed);
toggle = (ToggleButton)findViewById(R.id.toggBtn);
editString = ed.getText().toString();
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
toggle.toggle();
if(editString.equals("1")){
toggle.setTextOff("TOGGLE ON");
}
else if(editString.equals("0")){
toggle.setTextOn("TOGGLE OFF");
}
}
});
}
}
xml file:
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: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=".MainActivity"
android:orientation="vertical">
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/ed"/>
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn"
android:text="Summit"/>
<ToggleButton
android:id="@+id/toggBtn"
android:layout_below="@+id/text6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
/>
回答by Jogendra Gouda
<ToggleButton
android:id="@+id/togglebutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textOn="Vibrate on"
android:textOff="Vibrate off"
android:onClick="onToggleClicked"/>
Within the Activity that hosts this layout, the following method handles the click event:
在承载此布局的 Activity 中,以下方法处理单击事件:
public void onToggleClicked(View view) {
// Is the toggle on?
boolean on = ((ToggleButton) view).isChecked();
if (on) {
// Enable vibrate
} else {
// Disable vibrate
}
}
回答by GrIsHu
Just remove the line toggle.toggle();
from your click listener toggle()
method will always reset your toggle button value.
只需toggle.toggle();
从单击侦听器toggle()
方法中删除该行将始终重置您的切换按钮值。
And as you are trying to take the value of EditText
in string variable which always remains same as you are getting value in onCreate()
so better directly use the EditText
to get the value of it in your onClick
listener.
并且当您尝试获取EditText
in 字符串变量的值时,该值始终与获取值相同,onCreate()
因此更好地直接使用EditText
来获取它在onClick
侦听器中的值。
Just change your code as below its working fine now.
只需更改您的代码,如下所示,现在可以正常工作了。
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//toggle.toggle();
if ( ed.getText().toString().equalsIgnoreCase("1")) {
toggle.setTextOff("TOGGLE ON");
toggle.setChecked(true);
} else if ( ed.getText().toString().equalsIgnoreCase("0")) {
toggle.setTextOn("TOGGLE OFF");
toggle.setChecked(false);
}
}
});
回答by Berat Eyübo?lu
You should follow the Google guide;
你应该遵循谷歌指南;
ToggleButton toggle = (ToggleButton) findViewById(R.id.togglebutton);
toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
// The toggle is enabled
} else {
// The toggle is disabled
}
}
});
You can check the documentation here
您可以在此处查看文档
回答by NPSDPM
Try this Toggle Buttons
试试这个切换按钮
test_activity.xml
测试活动.xml
<ToggleButton
android:id="@+id/togglebutton"
android:layout_width="100px"
android:layout_height="50px"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:onClick="toggleclick"/>
Test.java
测试.java
public class Test extends Activity {
private ToggleButton togglebutton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
togglebutton = (ToggleButton) findViewById(R.id.togglebutton);
}
public void toggleclick(View v){
if(togglebutton.isChecked())
Toast.makeText(TestActivity.this, "ON", Toast.LENGTH_SHORT).show();
else
Toast.makeText(TestActivity.this, "OFF", Toast.LENGTH_SHORT).show();
}
}
回答by Harsh Goswami
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
editString = ed.getText().toString();
if(editString.equals("1")){
toggle.setTextOff("TOGGLE ON");
toggle.setChecked(true);
}
else if(editString.equals("0")){
toggle.setTextOn("TOGGLE OFF");
toggle.setChecked(false);
}
}
回答by Raghunandan
Move this
移动这个
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
editString = ed.getText().toString();
inside onClick
里面 onClick
Also you change the state of the toogle button whether its 0
or 1
您还可以更改工具按钮的状态,无论是其0
还是1
http://developer.android.com/guide/topics/ui/controls/togglebutton.html
http://developer.android.com/guide/topics/ui/controls/togglebutton.html
Example:
例子:
<RelativeLayout 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: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=".MainActivity" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="20dp"
android:text="Button" />
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="26dp"
android:ems="10" >
<requestFocus />
</EditText>
<Switch
android:id="@+id/switch1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/editText1"
android:layout_below="@+id/editText1"
android:layout_marginTop="51dp"
android:text="Switch" />
<ToggleButton
android:id="@+id/togglebutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/button1"
android:layout_below="@+id/switch1"
android:layout_marginTop="58dp"
android:onClick="onToggleClicked"
android:textOff="Vibrate off"
android:textOn="Vibrate on" />
</RelativeLayout>
MainActivity.java
主活动.java
public class MainActivity extends Activity implements OnClickListener {
EditText ed;
Switch sb;
ToggleButton tb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ed = (EditText) findViewById(R.id.editText1);
Button b = (Button) findViewById(R.id.button1);
sb = (Switch)findViewById(R.id.switch1);
tb = (ToggleButton)findViewById(R.id.togglebutton);
b.setOnClickListener(this);
}
@Override
public void onClick(View v) {
String s = ed.getText().toString();
if(s.equals("1")){
tb.setText("TOGGLE ON");
tb.setActivated(true);
sb.setChecked(true);
}
else if(s.equals("0")){
tb.setText("TOGGLE OFF");
tb.setActivated(false);
sb.setChecked(false);
}
}
}
Snaps
按扣
回答by Neeraj Shukla
I think what are attempting is semantically same as a radio button when 1 is when one of the options is selected and 0 is the other option.
当 1 是选择其中一个选项而 0 是另一个选项时,我认为尝试的内容在语义上与单选按钮相同。
I suggest using the radio button provided by Android by default.
我建议默认使用 Android 提供的单选按钮。
Here is how to use it- http://www.mkyong.com/android/android-radio-buttons-example/
这是如何使用它 - http://www.mkyong.com/android/android-radio-buttons-example/
and the android documentation is here-
和 android 文档在这里 -
http://developer.android.com/guide/topics/ui/controls/radiobutton.html
http://developer.android.com/guide/topics/ui/controls/radiobutton.html
Thanks.
谢谢。