关于微信聊天界面更换背景

本文探讨了在Android应用中如何解决软键盘弹出时导致的布局变动问题,特别是针对EditText与ListView组合的情况。通过使用特定布局技巧及windowSoftInputMode属性调整,实现了软键盘弹出时不压缩背景图片的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于SurfaceView竖屏问题:
http://stackoverflow.com/questions/7455399/rotating-a-camera-surfaceview-to-portrait
(小米4手机测试,camera.setDisplayOrientation(90);可以实现)

微信聊天界面细节点:
1.当底部EditText获取焦点,软键盘弹出后,聊天记录ListView往上弹,而背景图片不发生改变。
EditText影响Activity布局,windowSoftInputMode肯定是这个属性嘛!但是设置了adjustResize之后发现,好像不行啊,图片也往上被压缩了。试试adjustNothing?倒是不弹了,但是EditText被软键盘盖住了,那肯定不是这个了。
最开始想到的是两层布局,用FrameLayout,然后控制ListView往上弹,另一个布局的背景图不动。测试发现,没法控制背景图不动(哎,其实应该按照这个思路往下走的,因为没细究如何控制背景图)
然后想到了另一个办法(参考
http://stackoverflow.com/questions/5307264/how-to-prevent-soft-keyboard-from-resizing-background-image),既然两层,那用window,在activity中 getWindow().setBackgroundDrawable(getResources().getDrawable(R.drawable.test));
哈哈,不动了吧。但是图片顶部被覆盖了(因为是整个window的背景的原因)
那咋办呢。还是两层布局,为啥背景图被压缩了?我也不知道,可不可以让背景图不被压缩,可以!套一个ScrollView

<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/surfaceview"
android:layout_width="match_parent"
android:src="@drawable/test"
android:layout_height="match_parent" />
</ScrollView>

完美!

其他还需要注意的地方
比如说editText的监听事件那加一行listview的滚动mListView.setSelection(mStringList.size() - 1);

清单文件中Activity设置
android:windowSoftInputMode="adjustResize|stateAlwaysHidden"

listView设置transcriptMode属性
android:transcriptMode="alwaysScroll"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值