1

我为用户输入设置了 EditText。一旦用户键入任何字符,我希望它触发一个浮动标签上升到 EditText 行之上。当用户在 EditText 行上输入第一个字符时,查看的最佳方法是什么?文本观察器?其他的?

部分活动文件:

...
private ListenerEditText cListenerEditText;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.cardviewinput);

    cListenerEditText = (ListenerEditText) findViewById(R.id.CEditText);
    cTextInputLayout = (TextInputLayout) findViewById(R.id.ToDo_text_input_layout);

    cListenerEditText.requestFocus();
    cListenerEditText.setHint("To Do");

部分布局xml文件:

...
<android.support.design.widget.TextInputLayout
    android:id="@+id/ToDo_text_input_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"  >

<com.example.jdw.fourthscreen.ListenerEditText
    android:id="@+id/CEditText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="text|textCapSentences|textNoSuggestions"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textColor="#FFFFFF"
    android:textColorHighlight="#30D5C8"
    android:singleLine="true"
    android:maxLength="51"
    android:imeOptions="actionNext|flagNoExtractUi"
    android:layout_marginBottom="3dp"
    android:nextFocusDown="@+id/DEditText" >

</com.example.jdw.fourthscreen.ListenerEditText>
</android.support.design.widget.TextInputLayout>
4

2 回答 2

2

为了监视和/或控制文本输入,我们通常使用TextWatcheror InputFilter

对于您的情况,我相信TextWatcher是正确的做法。

于 2015-09-10T05:08:14.360 回答
1

要监视用户输入事件,EditText您可以使用TextWatcher.

您可以使用afterTextChanged()方法检查每个键入的字符。

下面是添加TextWatcherEditText.

cListenerEditText.addTextChangedListener(new TextWatcher() {
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) { }
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
    @Override
    public void afterTextChanged(Editable s) {
        Log.e("TextWatcherTest", "afterTextChanged:\t" +s.toString());
    }
});
于 2015-09-10T05:18:16.107 回答