5

こんにちは皆さん、Androidを初めて使用し、私のプロジェクトで本当にばかげた問題に悩まされています。ユーザーがEditTextソフトキーボードに触れるたびに、リストビューのヘッダービューで定義されるEditTextが1つ表示されます。EditTextをクリアするクリアボタンと呼ばれるものがあります。2.3デバイスでソフトキーボードをクリアした後、表示されません。ロック/電源ボタンを押すたびにデバイスをロックしてロックを解除すると、ソフトキーボードが表示されます。

<activity
        android:name=".pl.Mobile.AddJobNew"
        android:configChanges="orientation|keyboardHidden"
        android:screenOrientation="landscape"
        android:windowSoftInputMode="stateVisible|adjustResize|adjustPan"
         >

これがAndroidのAndroidでのマイアクティビティ宣言です:windowSoftInputMode:'adjustResize'オプションはAndroid2.3デバイスでは完全に機能しますが、ソフトキーボードが編集テキストに重なっている4.0デバイスでは失敗しました。オプション「adjustPan」は4.0デバイスでは正常に機能しますが、2.3デバイスでは失敗しました

この問題から抜け出すのを手伝ってください。

前もって感謝します

4

4 に答える 4

5

編集テキストを使用して、アクティビティでこれを試してください。

int currentapiVersion = android.os.Build.VERSION.SDK_INT;
if (currentapiVersion >= android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH){
// Do something for 4.0 and above versions
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
} 
else{
// do something for phones running an SDK before 4.0
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
}

また、削除します

android:windowSoftInputMode="stateVisible|adjustResize|adjustPan"

マニフェストファイルのアクティビティから。

Build.Version

于 2013-01-20T13:39:35.770 に答える
2

問題は、クリアボタンをクリックすると、editTextがフォーカスを失い、キーボードが非表示になることだと思います。

私はそれを解決するために2つのことを試みます。

  1. テキストをクリーンアップした後、次の手順を実行します。

    yourEditTextField.requestFocus()

  2. キーボードの可視性を手動で制御します。

    public void showKeyboard(){ビュービュー= getWindow()。getCurrentFocus(); if(view == null)return;

    InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.showSoftInput(view, InputMethodManager.SHOW_FORCED);
    

    }

    public void hiddenKeyboard(){ビュービュー= getWindow()。getCurrentFocus(); if(view == null)return;

    IBinder binder = view.getWindowToken();
    if (binder == null)
        return;
    
     // prevent a bug in some keyboards that makes the text hang on the screen
    if (view instanceof EditText) 
        ((EditText)view).setText(((EditText)view).getText().toString());
    
    
    InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(binder, InputMethodManager.HIDE_NOT_ALWAYS);
    

    }

于 2013-01-22T08:03:33.613 に答える
1

My AndroidManifest.xmlファイルに以下の行があり、うまく機能しています。このコードを試してください。余分なコードを入れないでください。それでも成功しない場合は、私に知らせてください。私はあなたを助けたいと思います。

<activity android:name=".pl.Mobile.AddJobNew" android:screenOrientation="portrait" android:configChanges="keyboard|orientation" android:windowSoftInputMode="adjustPan"/>

上記のコードでアクティビティを試してください。

于 2013-01-21T04:50:22.827 に答える
1

そのようなことを試してください

    editext1.setOnTouchListener(new OnTouchListener()
            {

                public boolean onTouch(View v, MotionEvent event)
                {
                    if (v instanceof EditText)
                    {
                        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                        imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
                        v.requestFocusFromTouch();
                        return true;
                    }
                    return false;
                }
            });

それがうまくいかない場合は、追加してみてください

        editext1.setOnFocusChangeListener(new OnFocusChangeListener()
        {

            public void onFocusChange(View v, boolean hasFocus)
            {
                InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
            }
        });

レイアウトからリクエストフォーカスを削除するのも良いでしょう。そして多分このandroid:windowSoftInputMode = "stateHidden|stateAlwaysHidden"をアクティビティのマニフェストに設定します

于 2013-01-23T20:53:43.497 に答える