开发者

How does Android determine whether to move the layout up when showing the softkeyboard?

开发者 https://www.devze.com 2023-01-14 19:44 出处:网络
How does Android determine whether to move the layout up when showing the softkeyboard? Note: I am aware that the activity property android:windowSoftInputMode=\"adjustResize|adjustResize|adjustUnspe

How does Android determine whether to move the layout up when showing the softkeyboard?

Note: I am aware that the activity property android:windowSoftInputMode="adjustResize|adjustResize|adjustUnspecified" exists, as described here http://developer.android.com/guide/topics/manifest/activity-element.html#wsoft , but in my case it doesn't seem to have any effect. This is my problem:

I have two activities, pretty much the same layout, but the first one is using a ListView that holds a list of buttons. The second activity holds a scrollview with buttons. The rest is the same, same number of buttons, same height of elements, etc.

Now, when I press the search button to open the search input bar, in my first activity, the entire layouts gets moved up. While on the second activity, the layout is not being moved up but the softkeyboard just displays on top of it. This is actually how I want it to behave. How can I achieve the same with my activity that's using the ListView?

In my manifest, initially I didn't specify any android:windowSoftInputMode attrib开发者_开发技巧ute, but even if I do, it doesn't make any difference; I tried all three values (adjustPan, adjustResize, adjustUndefined, without any difference).

This is my layout:

1) http://pastebin.com/5zzVxjbK

2) http://pastebin.com/KFtPuHvP

Interestingly though: when I set my ListView visibility in my layout 1 (left) to View.INVISIBLE, then the layout doesn not get moved up!

How does Android determine whether to move the layout up when showing the softkeyboard?


I can achieve this with a RelativeLayout and setting android:windowSoftInputMode="adjustPan" like so:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent" >

    <include android:id="@+id/Header" layout="@layout/header"
        android:layout_width="fill_parent" android:layout_height="wrap_content" />

    <ListView android:id="@+id/android:list" android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:layout_below="@id/Header"
        android:layout_above="@+id/Footer"  />

    <include android:id="@id/Footer" layout="@layout/footer"
        android:layout_width="fill_parent" android:layout_height="wrap_content"
        android:layout_alignParentBottom="true" />
</RelativeLayout>

You may be able to achive this by setting the footer gravity (or layout_gravity) to "bottom", if you want to keep the LinearLayout, but I am not sure.

0

精彩评论

暂无评论...
验证码 换一张
取 消