这是我的代码
<?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是从底部切割而不是从顶部切割,如{{1应用程序。
任何帮助都会表示赞赏。谢谢..
答案 0 :(得分:2)
我遇到了一个类似的问题,其中我自己调整的自定义视图 - ParallaxBackground
应该充当背景图像,具有由ViewPager
的滚动驱动的视差效果同样的活动。
换句话说,我有一个显示宽度略大于屏幕的图像的视图,当用户沿着ViewPager
滚动时,ParallaxBackground
中的图像也会滚动一点
现在在我的情况下,我在ViewPager的片段中有一些EditTexts,当用户点击它们,导致软键盘显示时,ParallaxBackground(以及背景图像)将被重新调整大小和挤压“违背我的意愿”。
所以我为boolean isBackground
和int
添加了fixedWidth
,两个fixedHeight
并覆盖了我的View 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
。< / p>
然后,在onCreate
方法中,您可以将isBackground
设置为true,并为您的测量屏幕宽度和高度提供fixedWidth
和fixedHeight
。
答案 1 :(得分:1)
删除父布局(RelativeLayout
)并使LinearLayout
仅包含对话框,父级!另外,将android:windowSoftInputMode="stateVisible|adjustResize"
添加到AndroidManifest.xml
答案 2 :(得分:0)
从Java而不是从XML添加背景图片:
getActivity().getWindow().setBackgroundDrawable(getResources().getDrawable(R.drawable.splash_image));
在清单中添加
android:windowSoftInputMode="adjustResize|stateHidden"
如果必须在屏幕打开时隐藏键盘,则可以根据要求编写隐藏状态