wake-up-neo.com

Tastatur versteckt EditTexts in Fragmenten

edit: Ich muss die Tastatur verwenden, aber sie verbirgt meine EditText. Ich brauche sie zum Scrollen, damit die Tastatur sie nicht verbirgt.  

Ich verwende ein Samsung-Tablet.

Mein Stil:

parent="Android:Theme.Holo.NoActionBar.Fullscreen"

Die EditText-Felder befinden sich wie folgt in einer scrollbaren Ansicht: 

Das Fragment-Layout:

<FrameLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
         Android:layout_height="match_parent"
         Android:layout_width="match_parent"
         Android:paddingBottom="@dimen/activity_vertical_margin"
         Android:paddingLeft="@dimen/activity_horizontal_margin"
         Android:paddingRight="@dimen/activity_horizontal_margin"
         Android:paddingTop="@dimen/activity_vertical_margin">

<ScrollView
    Android:layout_height="wrap_content"
    Android:layout_width="match_parent">

    <LinearLayout
        Android:layout_height="match_parent"
        Android:layout_marginBottom="20dp"
        Android:layout_width="match_parent"
        Android:orientation="vertical">

        <TextView
            Android:layout_height="wrap_content"
            Android:layout_marginTop="20dp"
            Android:layout_width="wrap_content"
            Android:text="@string/depot_code"/>

        <EditText
            Android:hint="@string/enter_depot_code"
            Android:id="@+id/etlocationId"
            Android:imeOptions="actionNext"
            Android:inputType="number"
            Android:layout_height="wrap_content"
            Android:layout_marginTop="20dp"
            Android:layout_width="wrap_content"
            Android:lines="1"
            Android:maxLength="12"
            Android:singleLine="true">

            <requestFocus/>
        </EditText>

        <TextView
            Android:layout_height="wrap_content"
            Android:layout_marginTop="20dp"
            Android:layout_width="wrap_content"
            Android:text="@string/name"/>

        <EditText
            Android:hint="@string/enter_name"
            Android:id="@+id/etname"
            Android:imeOptions="actionNext"
            Android:inputType="textPersonName"
            Android:layout_height="wrap_content"
            Android:layout_marginTop="20dp"
            Android:layout_width="wrap_content"
            Android:lines="1"
            Android:maxLength="24"
            Android:singleLine="true"/>

        <TextView
            Android:layout_height="wrap_content"
            Android:layout_marginTop="20dp"
            Android:layout_width="wrap_content"
            Android:text="@string/street"/>

        <EditText
            Android:hint="@string/enter_street"
            Android:id="@+id/etstreet"
            Android:imeOptions="actionNext"
            Android:inputType="textPostalAddress"
            Android:layout_height="wrap_content"
            Android:layout_marginTop="20dp"
            Android:layout_width="wrap_content"
            Android:lines="1"
            Android:maxLength="24"
            Android:singleLine="true"/>

        <TextView
            Android:layout_height="wrap_content"
            Android:layout_marginTop="20dp"
            Android:layout_width="wrap_content"
            Android:text="@string/suburb"/>

        <EditText
            Android:hint="@string/enter_suburb"
            Android:id="@+id/etsuburb"
            Android:layout_height="wrap_content"
            Android:layout_marginTop="20dp"
            Android:layout_width="wrap_content"
            Android:lines="1"
            Android:maxLength="24"
            Android:singleLine="true"/>

        <TextView
            Android:layout_height="wrap_content"
            Android:layout_marginTop="20dp"
            Android:layout_width="wrap_content"
            Android:text="@string/state"/>

        <Spinner
            Android:focusable="true"
            Android:focusableInTouchMode="true"
            Android:id="@+id/spinner"
            Android:imeOptions="actionNext"
            Android:layout_height="wrap_content"
            Android:layout_marginTop="20dp"
            Android:layout_width="fill_parent"
            Android:spinnerMode="dropdown"/>

        <TextView
            Android:layout_height="wrap_content"
            Android:layout_marginTop="20dp"
            Android:layout_width="wrap_content"
            Android:text="@string/phone"/>

        <EditText
            Android:hint="@string/enter_phone"
            Android:id="@+id/etphone"
            Android:imeOptions="actionDone"
            Android:inputType="phone"
            Android:layout_height="wrap_content"
            Android:layout_marginTop="20dp"
            Android:layout_width="wrap_content"
            Android:lines="1"
            Android:maxLength="12"
            Android:singleLine="true"/>

        <Button
            Android:id="@+id/btnadd"
            Android:layout_gravity="center"
            Android:layout_height="wrap_content"
            Android:layout_marginTop="20dp"
            Android:layout_width="wrap_content"
            Android:text="@string/add"/>
    </LinearLayout>
</ScrollView>
</FrameLayout>

Das Aktivitätslayout:

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
          Android:id="@+id/tech_controller"
          Android:layout_height="match_parent"
          Android:layout_width="match_parent"
          Android:orientation="vertical"
          Android:paddingBottom="@dimen/activity_vertical_margin"
          Android:paddingLeft="@dimen/activity_horizontal_margin"
          Android:paddingRight="@dimen/activity_horizontal_margin"
          Android:paddingTop="@dimen/activity_vertical_margin">

< .../ Layouts. ../>

<FrameLayout
    Android:id="@+id/second"
    Android:layout_height="match_parent"
    Android:layout_width="fill_parent"/>
</LinearLayout>

Ähnliche Fragen wurden gestellt, aber ich habe keine Antwort gefunden, die funktioniert.

Ich habe ein Projekt, das viele Fragmente verwendet, die an die eine Aktivität gebunden sind. In meinem Manifest für die Aktivität habe ich:

Android:windowSoftInputMode="stateHidden"

Einige der Fragmente erfordern Benutzereingaben.

Im Fragment-Layout verwende ich:

Jedes Fragment ist wie folgt verschachtelt:

<FrameLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_height="match_parent"
    Android:layout_width="match_parent" .../>

<ScrollView
    Android:layout_height="match_parent"
    Android:layout_width="match_parent">

    <LinearLayout
        Android:layout_height="match_parent"
        Android:layout_width="match_parent"
        Android:orientation="vertical">

        <EditText
            Android:imeOptions="actionNext"
            or
            Android:imeOptions="actionDone" .../>

Das funktioniert gut. EXCEPT Verbirgt die Tastatur die EditTexts, die sich auf der Seite weiter unten befinden.

enter image description here

Ich habe das immer wieder gelesen:

http://developer.Android.com/reference/Android/widget/TextView.html#attr_Android:imeOptions

Ich habe diese Vorschläge ausprobiert, aber die Tastatur ist dann sichtbar, wenn die Aktivität aufgerufen wird, was ich nicht möchte. Es funktioniert auch nicht. Vielleicht weil es ein Fragment ist?

SoftKeyboard versteckt EditText

Android-Tastatur verbirgt EditText

Ich habe versucht, eine dynamische Lösung zu finden. Jede Hilfe wird geschätzt.

edit: Dies ist für Tablets vorgesehen und es gibt nur eine Tastaturoption mit Sprachänderungen.


Bearbeiten: MEINE LÖSUNG

Ich habe es durch die Installation einer anderen Soft-Tastatur gelöst. https://code.google.com/p/softkeyboard/wiki/HowTo

14
Yvette Colomb

Versuchen Sie, InputMethodManager.hideSoftInputFromWindow() während der hier genannten onActivityCreated()-Funktion Ihres Fragments aufzurufen. SO answer ?

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    AppUtil.hideKeyboard(getActivity(), getView());
}

wobei hideKeyboard() so aussieht

public static void hideKeyboard(Activity activity, View viewToHide) {
    InputMethodManager imm = (InputMethodManager) activity
            .getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(viewToHide.getWindowToken(), 0);
}
4
Yenchi

Versuchen Sie, nur WindowsSoftInputMode als adjustpan zu verwenden.

Für ex:

Android:windowSoftInputMode="adjustPan" 
7
Vishwa

Sie können versuchen, dies in onActivityCreated Ihres Fragments einzufügen: 

getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

Dies sollte nicht dazu führen, dass die Tastatur beim Laden oder Starten Ihrer Aktivität mit Fragment geladen wird.

2
Joey

Ich habe das Problem durch die Installation einer anderen Soft-Tastatur über den Google Play Store gelöst.

Es waren Peteys - Kommentare, die mich zu dieser Lösung veranlasst haben.

Das von Ihnen verwendete IME hat ein eigenes "schwebendes" Layout. Können Sie Ihren Code mit integrierten IMEs wie Google Keyboard ausprobieren oder Ihren IME auf ein normales Layout mit voller Breite einstellen?

Ich dachte mir, dass das Spiel mit dem Ansichtslayout keine Auswirkungen auf eine Soft-Tastatur haben würde, die ein unabhängiges Layout hat.

Ich habe diesen Link verwendet https://code.google.com/p/softkeyboard/wiki/HowTo

Es funktioniert sogar mit Android Manifest:

Android:windowSoftInputMode="stateHidden"

Ich verwende dann imeoptions, um den Fluss des Editor-Cursors in der Ansicht zu steuern.

Update bearbeiten

Ich habe die App gerade auf einem Android-Tablet ohne Marke ausprobiert, das mit einer generischen Android-Tastatur geliefert wird und funktioniert, ohne etwas ändern zu müssen. Es scheint, dass die Standardtastatur von Samsung schmerzhaft ist.

2
Yvette Colomb

Ich habe diesen Code ausprobiert und mein Problem behoben.

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

Ändern Sie dies in LinearLayout :

<FrameLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"

zu

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_height="match_parent"
    Android:layout_width="match_parent"
    Android:orientation="vertical"
    Android:paddingBottom="@dimen/activity_vertical_margin"
    Android:paddingLeft="@dimen/activity_horizontal_margin"
    Android:paddingRight="@dimen/activity_horizontal_margin"
    Android:paddingTop="@dimen/activity_vertical_margin">

(und das schließende Tag). Beachten Sie die Ausrichtung.

Aktualisieren Sie das Manifest Entfernen Sie diese :

<application ... >
    <activity
      Android:windowSoftInputMode="stateVisible|adjustResize|adjustPan">
        ...
    </activity>
    ...
</application>

Ändere dies (Höhe) :

<ScrollView
    Android:layout_height="wrap_content"
    Android:layout_width="match_parent">
1
ps95

beachten Sie, dass die Tastatur zum Ausblenden nicht mit getActivity (). getWindow (). setFlags (WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS) funktioniert.

0
Terranology