簡體   English   中英

Android Studio-總是顯示鍵盤嗎?

[英]Android Studio - Always show keyboard?

我正在嘗試創建一個簡單的文字冒險類游戲,作為一個項目來幫助我學習東西。 為此,我需要鍵盤始終可見,並專注於屏幕上唯一的Edit Text(userinputEditText)。

用戶輸入一些內容,按Enter鍵,然后將文本捕獲為字符串,然后將其顯示在ScrollView內的Text View(mainTextView)中,以便文本始終顯示最新的條目。 按鍵偵聽器用於檢測何時按下Enter鍵,以避免僅向編輯文本添加新行。

當您按Enter鍵時,盡管鍵盤已關閉,但您必須再次按Edit Text進行鍵入。 我知道有一個簡單的解決方案可以使鍵盤永久保持打開狀態,但是我什么都做不到。

    final EditText userinputEditText = (EditText) findViewById(R.id.user_input_edittext);
    final TextView mainTextView = (TextView) findViewById(R.id.mainTextView);
    final ScrollView scrollview = (ScrollView) findViewById(R.id.scrollView);
    scrollview.fullScroll(ScrollView.FOCUS_DOWN);

    /// Update MainText window when Enter is pressed
    userinputEditText.setOnKeyListener(new View.OnKeyListener() {

        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (event.getAction() == KeyEvent.ACTION_DOWN) {
                switch (keyCode) {
                    case KeyEvent.KEYCODE_DPAD_CENTER:
                    case KeyEvent.KEYCODE_ENTER:
                        String userInputString = userinputEditText.getText().toString();
                        mainTextView.append(userInputString + "\n");
                        userinputEditText.setText("");
                        scrollview.fullScroll(ScrollView.FOCUS_DOWN);
                        return true;
                    default:
                        break;
                }
            }
            return false;
        }
    });

}

以下是您可以重復使用的示例代碼,

在AndroidManifest.xml中使用它。

android:windowSoftInputMode =“ stateAlwaysVisible”

像下面

<activity android:name=".MainActivity"
          android:windowSoftInputMode="stateAlwaysVisible">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
</activity>

在您的布局中,您可以使用

    <EditText
        android:id="@+id/editText"
        android:singleLine="true"
        android:imeOptions="actionDone"
        ... 
     />

在您的活動的OnCreate()方法中,您可以實現類似以下的操作...

final EditText editText = ((EditText) findViewById(R.id.editText));
        editText.setOnEditorActionListener(new EditText.OnEditorActionListener(){
            @Override
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                    String value = editText.getText().toString();
                    //TODO .. write your respective logic to add data to your textView

                    editText.setText(""); // clear the text in your editText
                    return true;

            }
        });

暫無
暫無

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

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