1

我有两个编辑文本视图。如果我先点击,我需要选择第一个edittext并设置为第二个“00”。就像在默认的 android 闹钟中一样。我的问题:

  • 我有 api 级别 10,所以我不能写类似的东西:

firstEText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        secondEText.setText("00");
    }
});

如果我使用

firstEText.setOnKeyListener(new View.OnKeyListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        secondEText.setText("00");
    }
});

所以我需要点击我的视图两次。可能的解决方案:

firstEText.setOnTouchListener(new OnTouchListener() {
    public boolean onTouch(View view, MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_DOWN) {

            //but with onTouch listener I have problems with 
            //edit text selection:
            ((EditText) view).setSelection(0, ((EditText) view).getText().length());
        }
        return false;
    }
});

所以我的 .setSelection 并不总是有效。我的天啊!请帮帮我

4

1 回答 1

6

如果我理解正确,您需要执行以下操作:

  • 对焦时firstEText,选择其中的所有文本firstEText并设置secondEText“00”

我不明白为什么你说你不能使用setOnFocusChangeListener,因为它从 API 1 开始可用

在获得焦点时选择EditText的所有文本的一个方便的属性是android:selectAllOnFocus,它完全符合您的要求。然后,您只需设置secondEText"00"

用户界面

<EditText
    android:id="@+id/editText1"
    android:layout_width="180dp"
    android:layout_height="wrap_content"
    android:selectAllOnFocus="true"
    android:background="@android:color/white"
    android:textColor="@android:color/black" />

<EditText
    android:id="@+id/editText2"
    android:layout_width="180dp"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dp"
    android:background="@android:color/white"
    android:textColor="@android:color/black" />

活动

firstEText = (EditText) findViewById(R.id.editText1);
secondEText = (EditText) findViewById(R.id.editText2);

firstEText.setOnFocusChangeListener(new View.OnFocusChangeListener() {

    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (hasFocus) {
            secondEText.setText("00");
        }
    }

});

希望能帮助到你。

于 2013-07-01T21:45:14.153 回答