我有一个ToggleButton
我想在每次点击按钮时更改TextView
的输入类型。我希望每次单击按钮时,文本视图的输入类型都在密码和普通文本之间切换。但正在发生的是,单击按钮后,文本视图的输入类型将从密码类型更改为普通文本。但那是关于它的。当我第一次单击该按钮后,在文本视图中不会发生输入类型的更改。我知道我在这里没有做点什么,但由于我缺乏Android知识和经验,我似乎无法解决这个难题。
非常感谢任何帮助!谢谢。
public class TextPlay extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.text);
initialize();
}
private void initialize() {
// map the views
final EditText commandInput = (EditText) findViewById(R.id.etCommands);
final ToggleButton toggleButton = (ToggleButton) findViewById(R.id.tbPassword);
toggleButton.setChecked(false);
// set listeners on the button
toggleButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (toggleButton.isChecked()) {
commandInput
.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
commandInput.refreshDrawableState();
} else {
commandInput.setInputType(InputType.TYPE_CLASS_TEXT);
}
}
});
}
}
答案 0 :(得分:0)
从此处尝试解决方案:http://developer.android.com/guide/topics/ui/controls/togglebutton.html
特别是本节:
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
}
}
});
我认为使用您正在尝试的当前方式,您可以将其更改为:
@Override
public void onClick(View v) {
if (toggleButton.isChecked()) {
commandInput
.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
commandInput.refreshDrawableState();
} else {
toggleButton.setChecked(true);
commandInput
.setInputType(InputType.TYPE_CLASS_TEXT);
}
}
关注setChecked(true);
行。
答案 1 :(得分:0)
public class TextPlay extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
Button chkCmd = (Button) findViewById(R.id.bResults);
final ToggleButton passTog = (ToggleButton) findViewById(R.id.tbPassword);
final EditText input = (EditText) findViewById(R.id.etCommands);
final TextView disp = (TextView) findViewById(R.id.tvResults);
input.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (passTog.isChecked()) {
input.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_VARIATION_PASSWORD);
} else {
input.setInputType(InputType.TYPE_CLASS_TEXT);
}
}
});