Odpowiedzi:
Czy pytasz, jak kontrolować to, co jest widoczne po otwarciu miękkiej klawiatury? Możesz pobawić się z windowSoftInputMode . Więcej dyskusji znajdziesz w dokumentacji dla programistów .
android:fitsSystemWindows="true"
do widoku głównego, aby rozwiązać ten problem.
Miałem te same problemy. Wypróbuj następujący kod:
android:windowSoftInputMode="adjustPan"
dodaj go do swojego manifest.xml w tagu działania działania, które zawiera dane wejściowe. przykład:
<activity
android:name=".Activities.InputsActivity"
...
android:windowSoftInputMode="adjustPan"
/>
adjustResize
by to zrobił, ale obejmuje również moje pola wejściowe
Miałem ten sam problem, w którym klawiatura programowa znajdowała się na górze widoków EditText, które zostały umieszczone na dole ekranu. Udało mi się znaleźć rozwiązanie, dodając jeden wiersz do odpowiedniego działania mojego pliku AndroidManifest.xml.
android:windowSoftInputMode="adjustResize|stateHidden"
Tak wygląda cały tag aktywności:
<activity
android:name="com.my.MainActivity"
android:screenOrientation="portrait"
android:label="@string/title_activity_main"
android:windowSoftInputMode="adjustResize|stateHidden" >
</activity>
Tutaj najważniejszą wartością jest adjustResize. Spowoduje to przesunięcie całego interfejsu użytkownika w górę, aby zwolnić miejsce na klawiaturę programową.
adjustResize|stateHidden
i nie miało to żadnego znaczenia adjustPan
.
Dlaczego nie spróbować dodać ScrollView, aby zawijać wszystko, co chcesz przewijać. Oto, jak to zrobiłem, gdzie właściwie zostawiam nagłówek na górze, który nie przewija się, podczas gdy widżety dialogowe (w szczególności EditTexts) przewijają się po otwarciu miękkiej klawiatury.
<LinearLayout android:id="@+id/HeaderLayout" >
<!-- Here add a header or whatever will not be scrolled. -->
</LinearLayout>
<ScrollView android:id="@+id/MainForm" >
<!-- Here add your edittexts or whatever will scroll. -->
</ScrollView>
Zwykle miałbym LinearLayout wewnątrz ScrollView, ale to zależy od Ciebie. Ponadto ustawienie stylu paska przewijania na outsideInset pomaga, przynajmniej na moich urządzeniach.
Wszystko, co musisz zrobić, to
android:isScrollContainer="true"
źródło: http://www.davidwparker.com/2011/08/25/android-fixing-window-resize-and-scrolling/
Przepraszamy za przywrócenie starego wątku, ale nikt nie wspomniał o ustawieniu android:imeOptions="flagNoFullscreen"
w elemencie EditText
android:windowSoftInputMode="adjustPan"
android:isScrollContainer="true"
działa na Androidzie EditText, podczas gdy nie działa z webview ani xwalkview. Gdy klawiatura programowa ukrywa dane wejściowe w przeglądarce internetowej lub xwalkview, której używaszandroid:windowSoftInputMode="adjustResize"
Uważam, że możesz sprawić, by przewijał się za pomocą kulki, co można ostatecznie osiągnąć programowo za pomocą metod selekcji, ale to tylko pomysł. Wiem, że metoda trackballa zazwyczaj działa, ale jeśli chodzi o dokładny sposób zrobienia tego i sprawienia, by działał z kodu, nie jestem pewien.
Mam nadzieję, że to pomoże.
dodaj tę pojedynczą linię do swojego względnego działania, w którym okładka klawiatury edytuje metodę text.inside onCreat ().
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
Jeśli pole EditText jest objęte klawiaturą, użyj następującego kodu:
EditText= findViewById(R.id.edittext)
EditText?.getParent()?.requestChildFocus(EditText,EditText)
Jeśli chcesz, aby kursor znajdował się w zogniskowanym tekście edycji, użyj EditText.requestFocus()
po tym, EditText?.getParent()?.requestChildFocus(EditText,EditText)
co pomaga uzyskać fokus i kursor w zogniskowanym tekście edycji.
Edytuj plik AndroidManifest.xml
android:windowSoftInputMode="adjustResize"
Dodaj to do widoku głównego pliku układu.
android:fitsSystemWindows="true"
To wszystko.