Android Soft Keyboard не меняет мой вид - PullRequest
1 голос
/ 07 марта 2012

Я знаю, что есть тысячи вопросов по этому поводу, но я пролистал их, и ни одно из их решений не работает для меня.

Моя деятельность имеет интерфейс с вкладками с таким типом макета:

<RelativeLayout>
    <LinearLayout tabBar>
        <Button tab1 />
        <Button tab2 />
        <Button tab3 />
        <Button tab4 />
    </LinearLayout>
    <ViewFlipper>
        <fragment Tab1 />
        <fragment Tab2 />
        <fragment Tab3 />
        <fragment Tab4 />
    </ViewFlipper>
</RelativeLayout>

При нажатии кнопки tab2 в LinearLayout я меняю ViewFlipper для отображения дочернего элемента 2, который управляется Tab2Fragment.

Макет Tab2Fragment выглядит следующим образом:

<FrameLayout>
    <ListView/>
</FrameLayout>

Когда элемент в ListView выбран, я создаю новый фрагмент, давайте назовем его Sub2Fragment и добавлю его в качестве дочернего элемента к FrameLayout.

Sub2Fragment имеет такой макет:

<LinearLayout android:layout_height="fill_parent" android:layout_width="fill_parent">
    <LinearLayout> <TextView /> <EditText /> </LinearLayout>
    <LinearLayout> <TextView /> <EditText /> </LinearLayout>
    <LinearLayout> <TextView /> <EditText /> </LinearLayout>
    <LinearLayout> <TextView /> <EditText /> </LinearLayout>
    <Button />
</LinearLayout>

Когда отображается программная клавиатура, она покрывает некоторые из моих EditTexts и мою кнопку.Я также попытался обернуть этот LinearLayout с помощью ScrollView:

<ScrollView android:layout_height="fill_parent" android:layout_width="fill_parent">
    <LinearLayout android:layout_height="wrap_content" android:layout_width="fill_parent">
        <LinearLayout> <TextView /> <EditText /> </LinearLayout>
        <LinearLayout> <TextView /> <EditText /> </LinearLayout>
        <LinearLayout> <TextView /> <EditText /> </LinearLayout>
        <LinearLayout> <TextView /> <EditText /> </LinearLayout>
        <Button />
    </LinearLayout>
</ScrollView>

Я также попробовал мой манифест с и без android:windowSoftInputMode="adjustResize" в своей Деятельности, но ничего, что я пробую, не заставляет представление автоматически изменять размер, так чточто ScrollView позволит мне прокручивать весь контент, когда программная клавиатура видна.

Я также пытался обернуть все действия в ScrollView, но это испортило весь мой макет, потому что он основан на заполнении всего экранаsize и ScrollView отключают дочерний макет от фактического размера экрана ...

Любая помощь?

1 Ответ

4 голосов
/ 09 марта 2012

Я нашел проблему ... Я хотел избавиться от верхней строки состояния, поэтому я добавил это в свою активность:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

Это растоптало изменение размеров экранной клавиатуры. Прокомментируйте это, и все будет работать как ожидалось.

...