Android软键盘破坏了我的布局

时间:2015-07-08 21:17:46

标签: java android

我知道有很多关于这个话题的问题,但似乎没有一个对我有用。我有一个线性布局,下面有一个编辑文本和图标,但当弹出键盘时,它会覆盖图标和一半编辑文本。

我的清单文件:

<activity
    android:name="com.social.pages.Post"
    android:windowSoftInputMode="stateVisible|adjustResize"
    android:screenOrientation="portrait" >
</activity>

我的布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/feed_bg" >

    <LinearLayout
        android:id="@+id/stories_post_entire"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/story_post"
        android:layout_centerHorizontal="true"
        android:background="@drawable/bg_parent_rounded_corner"
        android:orientation="vertical"
        android:paddingBottom="@dimen/feed_item_padding_top_bottom"
        android:paddingTop="@dimen/feed_item_padding_top_bottom" >

        <!--
             <LinearLayout
            android:id="@+id/stories_post_text"
            android:layout_width="fill_parent"
            android:layout_height="300dp"
            android:layout_marginTop="15dp"
            android:orientation="horizontal"
            android:paddingBottom="@dimen/feed_item_padding_top_bottom"
            android:paddingLeft="@dimen/feed_item_padding_left_right"
            android:paddingRight="@dimen/feed_item_padding_left_right" >
        -->

        <EditText
            android:id="@+id/stories_post_story"
            android:layout_width="fill_parent"
            android:layout_height="300dp"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_marginTop="10dp"
            android:background="@drawable/bg_parent_rounded_corner"
            android:ems="10"
            android:gravity="top"
            android:hint="Tell Your Story..."
            android:padding="10dp"
            android:paddingLeft="10dp"
            android:scrollbars="vertical"
            android:typeface="serif" />

        <LinearLayout
            android:id="@+id/stories_post_bar"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_marginTop="10dp"
            android:paddingLeft="@dimen/feed_item_padding_left_right"
            android:paddingRight="@dimen/feed_item_padding_left_right" >

            <ImageView
                android:id="@+id/stories_post_tag"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:scaleType="fitCenter"
                android:src="@drawable/tag" />

            <ImageView
                android:id="@+id/stories_post_take_pic"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="30dp"
                android:scaleType="fitCenter"
                android:src="@drawable/take_pic" />
        </LinearLayout>
    </LinearLayout>

    <!-- </LinearLayout> -->

    <Button
        android:id="@+id/story_post"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="Post" />

</RelativeLayout>

尚未编写任何Java代码。

2 个答案:

答案 0 :(得分:1)

关于软键盘你唯一能做的就是在清单中设置android:windowSoftInputMode(或者以编程方式动态更改它)。允许的模式基本上没有任何东西(只需让键盘弹出并覆盖任何内容),平移(滚动应用程序以使光标在屏幕上),然后调整大小(调整应用程序大小以完全布置在键盘上方)。

你显然想要调整大小。然而,为了实现这一目标,您的布局需要调整大小 - 需要一些可以缩小的元素,并且仍然适合较小的应用程序,或者需要有可以缩小的空白空间。如果你有很多屏幕上的东西,那就不行了。在这种情况下,Android仍然会确保光标在屏幕上,但不会做任何其他事情。

看看你的布局 - 我看不到任何可以缩小的东西。您可能能够重构它以使编辑文本使用fill_parent以便它可以缩小,但这需要使它(或其直接父级)layout_above和layout_below两个其他元素,因此它的大小是它们之间的剩余空间。除了删除元素之外,这是我能看到的所有内容。

答案 1 :(得分:1)

您将EditText元素设置为300dp高度,这可以防止任何内容向上移动。我能够通过在RelativeLayout中包装EditText并跟随LinearLayout(包含图像)来解决这个问题。通过这样做,您可以将图像外壳LinearLayout设置为alignParentBottom =“true”。我相信这是你想要的效果。

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:id="@+id/stories_post_entire"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/story_post"
        android:layout_centerHorizontal="true"
        android:orientation="vertical" >

        <!-- ADDITION -->
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">



        <EditText
            android:id="@+id/stories_post_story"
            android:layout_width="fill_parent"
            android:layout_height="300dp"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_marginTop="10dp"
            android:ems="10"
            android:gravity="top"
            android:hint="Tell Your Story..."
            android:padding="10dp"
            android:paddingLeft="10dp"
            android:scrollbars="vertical"
            android:typeface="serif" />

        <LinearLayout
            android:id="@+id/stories_post_bar"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_alignParentBottom="true"
            android:layout_marginTop="10dp" >
            <!-- ADDITION    ^^^ alignParentBottom-->

            <ImageView
                android:id="@+id/stories_post_tag"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:scaleType="fitCenter"
                android:src="@drawable/osumu_blur"/>

            <ImageView
                android:id="@+id/stories_post_take_pic"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="30dp"
                android:scaleType="fitCenter"
                android:src="@drawable/osumu_blur"/>
        </LinearLayout>

            <!-- ADDITION -->
        </RelativeLayout>
    </LinearLayout>


    <!-- </LinearLayout> -->

    <Button
        android:id="@+id/story_post"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="Post" />

</RelativeLayout>

注意:我用“dummy_image”

替换了你的drawable src