Ich habe ein <ScrollView>
Layout:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/my_scrollview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<EditText
android:id="@+id/input_one"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:inputType="number" >
<EditText
android:id="@+id/input_two"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:inputType="number" >
<EditText
android:id="@+id/input_three"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:inputType="number" >
<Button
android:id="@+id/ok_btn"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="20dp"
android:text="@string/ok_str" />
</LinearLayout>
</ScrollView>
Wie Sie oben sehen, besteht das einfache Layout aus drei Eingabefeldern und einer Schaltfläche "OK".
Ich meine app mit dem oben Layout laufen, wenn ich auf dem ersten Eingabefeld tippen ( @+id/input_one
), die Soft - Tastatur wird vom unteren Rand des Bildschirms auftauchen, es verbirgt sich das dritte Eingabefeld und die Schaltfläche „Ok“.
Da ich benutze <ScrollView>
, dachte ich, ich kann die Seite nach oben scrollen, um das 3. Eingabefeld und die Schaltfläche "Ok" zu sehen, die von der Softtastatur ausgeblendet werden, aber die Seite kann nicht gescrollt werden . Warum? Wie kann man es loswerden? Grundsätzlich möchte ich, dass alle Eingabefelder und die Schaltfläche "Ok" auch die Softtastatur angezeigt wird.
Antworten:
Ich reparierte das Problem durch das Definieren Sie das folgende Attribut in
<activity>
der AndroidManifest.xmlquelle
Ok, ich habe jetzt mehrere Stunden gesucht, um das Problem zu finden, und ich habe es gefunden.
Keine der Änderungen hat mir gefallen
fillViewport="true"
oderandroid:windowSoftInputMode="adjustResize"
mir geholfen.Ich benutze Android 4.4 und das ist der große Fehler :
Irgendwie verhindern die Vollbild-Designs, dass die ScrollViews scrollen, wenn das SoftKeyboard sichtbar ist.
Im Moment habe ich stattdessen Folgendes verwendet:
Ich weiß nicht, wie ich die obere Systemleiste mit Zeit- und Batterieanzeige loswerden soll, aber zumindest habe ich das Problem.
Hoffe das hilft anderen, die das gleiche Problem haben.
EDIT: Ich habe eine kleine Problemumgehung für meinen Fall bekommen, also habe ich sie hier gepostet :
Ich bin mir nicht sicher, ob dies für Sie funktionieren wird, aber es wird Ihnen definitiv helfen, einige Dinge zu verstehen und zu klären.
EDIT2: Hier ist ein weiteres gutes Thema, das Ihnen hilft, in die richtige Richtung zu gehen oder sogar Ihr Problem zu lösen.
quelle
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
Für mich ist das einzige, was funktioniert, die Aktivität im Manifest dieses Attributs:
Die Tastatur beim Öffnen der Aktivität nicht anzeigen und den unteren Rand der Ansicht nicht überlappen.
quelle
Fügen Sie dies wie folgt in Ihr Manifest ein, ohne Vollbildmodus
in deinem Manifest
quelle
ScrollView
, sondern a,RelativeLayout
die a enthält,LinearLayout
das dann a enthältScrollView
In Ihrer Eigenschaft
Manifest
definewindowSoftInputMode
:quelle
Schau dir das an.
quelle
Das hat nur bei mir funktioniert:
quelle
Wenn Sie dies programmgesteuert tun möchten, fügen Sie einfach die folgende Zeile zum onCreate der Aktivität hinzu.
quelle
Sie können versuchen, den folgenden Code zu verwenden, um Ihr Problem zu lösen:
quelle
Nun, die einfachste Antwort, die ich versucht habe, ist, einfach Ihren Code zu entfernen, wodurch die Aktivität im Vollbildmodus angezeigt wird. Ich hatte einen Code wie diesen, der dafür verantwortlich war, dass meine Aktivität im Vollbildmodus ausgeführt wurde:
if (Build.VERSION.SDK_INT> = Build.VERSION_CODES.KITKAT) {
Ich habe gerade meinen Code entfernt und er funktioniert einwandfrei. Wenn Sie dies jedoch mit eingeschaltetem Vollbildmodus erreichen möchten, müssen Sie einige andere Methoden ausprobieren
quelle