簡體   English   中英

EditText:一旦用戶完成輸入,如何更改可見性?

[英]EditText:how to change visibility once the user has done finished typing?

用戶停止鍵入或單擊完成后,如何更改EditText視圖的可見性? 我嘗試這樣做,但收到錯誤消息。

    package com.example.android.monopolycredit;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.widget.EditText;
import android.widget.TextView;

public class LoginLobby extends AppCompatActivity {

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

        final EditText usernameEditText = findViewById(R.id.usernameField);
        usernameEditText.setOnEditorActionListener(
                new EditText.OnEditorActionListener() {
                    @Override
                    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                        if (actionId == EditorInfo.IME_ACTION_SEARCH ||
                                actionId == EditorInfo.IME_ACTION_DONE ||
                                event.getAction() == KeyEvent.ACTION_DOWN &&
                                        event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
                            if (!event.isShiftPressed()) {
                                // the user is done typing.
                                usernameEditText.setVisibility(View.GONE);
                                return true; // consume.
                            }
                        }
                        return false; // pass on to other listeners.
                    }
                });
    }

}

任何幫助,將不勝感激。 我是android開發的新手。 提前致謝。 :)

用戶停止鍵入后,如何更改EditText視圖的可見性...

沒有此類事件可以告訴您用戶已停止鍵入。 即使用戶停止鍵入,您仍然可以在該EditText字段中保持焦點 ,這意味着他可以繼續鍵入。 因此,在這種情況下,您無法確定他是否真的停止輸入文本。

或點擊完成?

那已經有可能了。 為了收聽鍵盤更改(例如完成的操作),只需將actionId == EditorInfo.IME_ACTION_DONE添加到現有代碼中:

EditText usernameEditText = findViewById(R.id.usernameField);
usernameEditText.setOnEditorActionListener(new EditText.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event){
        if (actionId == EditorInfo.IME_ACTION_DONE && !event.isShiftPressed()) {
            // the user is done typing.
            usernameEditText.setVisibility(View.GONE);
            return true;
        }
        return false;
    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM