3

Ich habe unten allgemeine, jederzeit verwendbare Funktionen zum Anzeigen und Ablehnen von Tastatur codiert:Android vermeiden Tastaturbedeckung Text programmatisch bearbeiten

| == | Display und Tastatur Entlassen Programmatically:

InputMethodManager iptKeybodMgrVar; 

void keybodDspFnc(EditText txtEdtVyuVar) 
{ 
    txtEdtVyuVar.requestFocus(); 
    if (iptKeybodMgrVar == null) 
    { 
     iptKeybodMgrVar = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
    } 
    iptKeybodMgrVar.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY); 
} 

void keybodDsmFnc(EditText txtEdtVyuVar) 
{ 
    iptKeybodMgrVar.hideSoftInputFromWindow(txtEdtVyuVar.getWindowToken(), 0); 
} 

Aber Problem ist, wenn der Edit Text unten Tastatur ist, die Aktivität nicht verschiebt nach oben. Es verschiebt sich nur, wenn ein Benutzer mit der Eingabe beginnt.

Also wie mache ich es nach oben verschieben, sobald die Tastatur erscheint?

ging ich durch alle Links unten und nichts half mir:

Android: How do I prevent the soft keyboard from pushing my view up?

adjustPan not preventing keyboard from covering EditText

Android : Soft Keyboard covering edit text up (adjustresize or adjustpan doesnt work)

https://readyandroid.wordpress.com/android-soft-keyboard-covers-edittext-field-overscroll-to-soft-keyboard/

Ich habe versucht, und vermöge Arbeit:

android:windowSoftInputMode="adjustPan|stateAlwaysHidden" 

android:windowSoftInputMode="adjustResize|stateAlwaysHidden" 

android:windowSoftInputMode="adjustResize|adjustPan" 

auch versucht, diese Codes:

(So, duplizieren nicht von :) Move layouts up when soft keyboard is shown?

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); 

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); 

//This Code brings up the keyboard at starting of the activity and pushes all Edit Text up. So not usefull 
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE| 
      WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); 

ich Scroll hinzufügen kann, aber es scheint, als ob nur Abhilfe und scheint keine Lösung.

Fühlen Sie, dass es eine programmatische Lösung wie das Festlegen von InputMethodManager geben sollte. Bitte hilf mir.

+1

können Sie Ihre XML-Code zu setzen? – mrid

+1

Ich füge Relatives Layout hinzu und füge Text programmatisch und dynamisch hinzu. Also kein XML. –

+1

die gesamte XML? – mrid

Antwort

0

Sie benötigen EditText innerhalb Linearlayout wickeln, wickeln Sie es dann mit Scroll. Es ist ein wenig schwierig, wenn Sie über Code, also mein Vorschlag ist, ändern Sie Ihre XML-Layout.

+0

Wie ich in Frage erwähnt habe, scheint ScrollView ein Workaround zu sein, aber keine Lösung für das Problem. Das Hinzufügen von Scrollview verursacht andere Layoutprobleme. My Edit Text sind im relativen Layout und können auf dem Bildschirm verschoben werden. –

0

Ihr Wurzel Layout

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:id="@+id/root" 
android:layout_height="match_parent"> 

    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
    <!--extra views--> 


    <!--add below layout programmatically--> 
    <!--<include layout="@layout/layout_dynamic"/>--> 


    </ScrollView> 
</RelativeLayout> 

Dynamisches Layout

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/dynamicLinearLayout" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:orientation="vertical"> 

<EditText 
    android:id="@+id/editText" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:inputType="text" /> 

</LinearLayout> 

hinzufügen Ansicht dynamisch (keine Notwendigkeit, Verhalten angeben)

private void addEditText(){ 
    RelativeLayout mRootLayout = (RelativeLayout) findViewById(R.id.root); 

    LayoutInflater inflater = LayoutInflater.from(mActivity); 
    View newView = inflater.inflate(R.layout.layout_dynamic,mRootLayout); 
    EditText editText = (EditText) newView.findViewById(R.id.editText); 

    mRootLayout.addView(newView); 


} 
Manifest

Datei

<activity 
     android:name=".MainActivity" 
     android:configChanges="keyboard|keyboardHidden|orientation|screenSize" 
     android:windowSoftInputMode="adjustPan"/> 
+0

Ihr Code hat mir nicht geholfen. Grund 1) ScrollView kann nur in Teilansichten hosten. 2) Text bearbeiten shud innerhalb des relativen Layouts sein, da es beweglich sein kann. –

Verwandte Themen