如何在每次单击ToggleButton时使用ToggleButton更改TextView的输入类型?

时间:2013-03-13 21:54:44

标签: android textview togglebutton

我有一个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);
                }
            }
        });
    }
}

2 个答案:

答案 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);
            }
        }
    });