Mam <ScrollView>
układ:
<?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>
Jak widać powyżej, prosty układ składa się z trzech pól wprowadzania i przycisku „Ok”.
Uruchamiam moją aplikację w powyższym układzie, kiedy stuknę w pierwsze pole wprowadzania ( @+id/input_one
), klawiatura ekranowa wyskoczy z dołu ekranu, ukryje trzecie pole wprowadzania i przycisk „OK”.
Odkąd używam <ScrollView>
, pomyślałem, że mogę przewinąć stronę w górę, aby zobaczyć trzecie pole wprowadzania i przycisk „OK”, które są ukryte za pomocą miękkiej klawiatury, ale strony nie można przewijać . Czemu? Jak się go pozbyć? w zasadzie chciałbym zobaczyć wszystkie pola wprowadzania i przycisk „OK”, nawet pojawiła się klawiatura ekranowa.
Odpowiedzi:
Naprawiłem problem poprzez zdefiniowanie w następujący atrybut
<activity>
z AndroidManifest.xmlźródło
Ok, przeszukałem teraz kilka godzin, aby znaleźć problem i znalazłem go.
Żadna ze zmian nie polubiła
fillViewport="true"
ani nieandroid:windowSoftInputMode="adjustResize"
pomogła mi.Używam Androida 4.4 i to jest duży błąd :
W jakiś sposób motywy pełnoekranowe uniemożliwiają przewijanie ScrollViews, gdy widoczny jest SoftKeyboard.
W tej chwili zamiast tego użyłem tego:
Nie wiem, jak pozbyć się górnego paska systemowego z wyświetlaniem czasu i baterii, ale przynajmniej mam problem.
Mam nadzieję, że pomoże to innym, którzy mają ten sam problem.
EDYCJA: Mam małe obejście mojego przypadku, więc opublikowałem to tutaj :
Nie jestem pewien, czy to zadziała, ale na pewno pomoże ci to zrozumieć i wyjaśnić kilka rzeczy.
EDIT2: Oto kolejny dobry temat, który pomoże ci podążać we właściwym kierunku, a nawet rozwiązać twój problem.
źródło
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
Dla mnie jedyne, co działa, to działanie w manifeście tego atrybutu:
Aby nie pokazywać klawiatury podczas otwierania działania i nie nakładać się na dół widoku.
źródło
umieść to w swoim Manifeście w ten sposób w trybie Brak trybu pełnoekranowego
w twoim manifeście
źródło
ScrollView
, aleRelativeLayout
zawiera a,LinearLayout
który zawiera aScrollView
W Twojej
Manifest
zdefiniowanejwindowSoftInputMode
właściwości:źródło
Sprawdź to.
źródło
To zadziałało tylko dla mnie:
źródło
Również, jeśli chcesz to zrobić programowo, po prostu dodaj poniższy wiersz do onCreate działania.
źródło
Możesz spróbować użyć następującego kodu, aby rozwiązać problem:
źródło
cóż, najprostszą odpowiedzią, jaką wypróbowałem, jest po prostu usunięcie kodu, co powoduje, że aktywność jest wyświetlana na pełnym ekranie.
if (Build.VERSION.SDK_INT> = Build.VERSION_CODES.KITKAT) {
Właśnie usunąłem swój kod i działa całkowicie dobrze, chociaż jeśli chcesz to osiągnąć na pełnym ekranie, musisz wypróbować inne metody
źródło