0

这是我的代码

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

<ImageView
    android:id="@+id/bgImage"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:layout_alignParentTop="true"
    android:contentDescription="@string/todo"
    android:scaleType="fitXY"
    android:src="@drawable/default_wallpaper" />

<LinearLayout
    android:id="@+id/mainLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_below="@+id/title"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/in"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="@android:color/transparent"
        android:cacheColorHint="@android:color/transparent"
        android:divider="@android:color/transparent"
        android:stackFromBottom="true"
        android:transcriptMode="alwaysScroll" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:orientation="horizontal" >

        <EditText
            android:id="@+id/edit_text_out"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_gravity="bottom"
            android:layout_weight="1"
            android:inputType="none" />

        <Button
            android:id="@+id/button_send"
            android:layout_width="70dp"
            android:layout_height="fill_parent"
            android:text="@string/send"
            android:textSize="15sp"
            android:textStyle="bold" />
    </LinearLayout>
</LinearLayout>

</RelativeLayout>

在这种情况下,当我点击EditText软键盘时会打开,但我ImageView正在缩小。

android:windowSoftInputMode="adjustPan"在清单文件中使用过,但是通过使用它,它会向上推整个活动,但我希望 ImageView 保持原样,并且当键盘打开时,ImageView 是从底部切开的,而不是像在WhatsApp应用程序中那样从顶部切开。

任何帮助将不胜感激。谢谢 ..

4

3 回答 3

2

我有一个类似的问题,其中ParallaxBackground我已经适应的自定义视图应该充当具有视差效果的背景图像,该视差效果由ViewPager同一活动中的 a 的滚动驱动。

换句话说,我有一个视图,它显示的图像宽度略大于屏幕的宽度,当用户沿 滚动时,滚动中ViewPager的图像ParallaxBackground也会滚动一点。

现在,在我的情况下,我的 ViewPager 片段中有一些 EditText,当用户单击它们时,导致软键盘出现,ParallaxBackground(以及因此,背景图像)将被重新调整大小并违背我的意愿” ”。

所以我为 and 添加了一个boolean isBackground, two intsfixedWidthfixedHeight覆盖了我的视图onMeasure(),如下所示:

 @Override
 protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {


    if(isBackground) 
    // If this is being used as a background and is supposed to occupy the whole screen...
    {
                    // force the View to have the specified dimensions
        setMeasuredDimension(fixedWidth, fixedHeight);
    }
    // ...aply default measures...
    else
    {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    }

 }

我知道这不是一个“漂亮”的解决方案,但是,即使我的回答不是 100% 与您的问题相关,您可能想尝试扩展ImageView类并覆盖onMeasure.

然后,在您的onCreate方法中,您可以设置isBackground为 true 并给出您测量的屏幕宽度fixedWidthfixedHeight高度的值。

于 2014-02-13T15:18:31.583 回答
1

删除父布局(RelativeLayout)并使LinearLayout仅包含对话框的父级!另外,添加android:windowSoftInputMode="stateVisible|adjustResize"AndroidManifest.xml

于 2013-02-28T13:09:50.267 回答
0

从 Java 而非 XML 添加背景图像:

getActivity().getWindow().setBackgroundDrawable(getResources().getDrawable(R.drawable.splash_image));

在清单中添加

android:windowSoftInputMode="adjustResize|stateHidden"

如果必须在打开屏幕时隐藏键盘,可以根据需要编写隐藏状态

于 2018-10-22T12:36:48.790 回答