0

我有一个ToggleButton我想在TextView每次单击按钮时更改 a 的输入类型。我希望每次单击按钮时文本视图的输入类型在密码和普通文本之间切换。但是发生的事情是,单击按钮后,文本视图的输入类型正在从密码类型更改为普通文本。但仅此而已。当我第一次单击按钮时,文本视图中的输入类型没有变化。我知道我在这里没有做任何事情,但由于我缺乏 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);
                }
            }
        });
    }
}
4

2 回答 2

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);
            }
        }
    });
于 2014-06-03T07:57:16.477 回答
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);线路。

于 2013-03-13T22:01:17.953 回答