键盘向上时如何调整列表视图的大小?
Posted
技术标签:
【中文标题】键盘向上时如何调整列表视图的大小?【英文标题】:How to resize a listview when the keyboard goes up? 【发布时间】:2015-12-31 00:01:05 【问题描述】:这是没有键盘的屏幕:
http://i.stack.imgur.com/YOnMf.png
但是当我点击 EditText 并且键盘上升时,标题混乱并消失了,因为它也上升了:
http://i.stack.imgur.com/zyJ3j.png
这是代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
tools:context=".SecondActivity"
android:background="@color/white">
<RelativeLayout
android:layout_
android:layout_
android:id="@+id/abs"
android:orientation="horizontal"
android:layout_alignParentTop="true"
android:gravity="center">
<ImageView
android:layout_
android:layout_
android:id="@+id/btnVoltar"
android:src="@drawable/inochat"
android:layout_marginLeft="3dp"/>
<ImageView
android:layout_
android:layout_
android:id="@+id/usu"
android:src="@drawable/usuario"
android:layout_alignParentRight="true"
android:background="@drawable/foto"
android:layout_marginRight="2dp"
android:layout_marginTop="3dp"/>
<TextView
android:layout_
android:layout_toLeftOf="@+id/addfavorito"
android:layout_
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Nome"
android:id="@+id/nomeoutro"
android:layout_centerVertical="true"
android:layout_toRightOf="@+id/btnVoltar"
android:layout_toEndOf="@+id/btnVoltar"
android:textColor="#000000"
android:textSize="15dp"
android:layout_marginLeft="5dp"/>
<ImageView
android:layout_
android:layout_
android:src="@drawable/traco"
android:layout_alignParentBottom="true"/>
<ImageButton
android:layout_
android:layout_
android:id="@+id/addfavorito"
android:layout_centerVertical="true"
android:layout_toStartOf="@+id/usu"
android:src="@drawable/fav"/>
</RelativeLayout>
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/swipe_refresh_layout"
android:layout_
android:layout_
android:layout_above="@+id/llMsgCompose"
android:layout_below="@+id/abs">
<ListView
android:isScrollContainer="false"
android:layout_above="@+id/llMsgCompose"
android:id="@+id/txtMensagens"
android:layout_
android:layout_
android:background="@null"
android:divider="@null"
android:transcriptMode="alwaysScroll">
</ListView>
</android.support.v4.widget.SwipeRefreshLayout>
<RelativeLayout
android:id="@+id/llMsgCompose"
android:layout_
android:layout_
android:background="@color/white"
android:layout_alignParentBottom="true"
android:layout_marginBottom="1dp"
android:gravity="center">
<EditText
android:id="@+id/txtMensagem"
android:layout_
android:layout_
android:background="@color/bg_msg_input"
android:textColor="@color/text_msg_input"
android:paddingLeft="6dp"
android:paddingRight="6dp"
android:inputType="text"
android:layout_alignParentRight="true"
android:layout_toRightOf="@+id/icone"/>
<ImageView
android:layout_
android:layout_
android:id="@+id/icone"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:background="@color/bg_msg_input"
android:src="@drawable/msg"/>
</RelativeLayout>
</RelativeLayout>
【问题讨论】:
尝试在清单中的活动标签中添加 android:windowSoftInputMode="adjustResize" 或 android:windowSoftInputMode="adjustPan" 【参考方案1】:尝试在 Manifest 中为此活动添加以下内容:
android:windowSoftInputMode="adjustPan"
android:windowSoftInputMode="adjustPan" 和 android:windowSoftInputMode="adjustResize" 的区别:
“调整大小”
调整活动窗口的大小,为屏幕上的软键盘腾出空间。
“调整盘”
活动窗口的内容会自动平移,因此当前焦点永远不会被键盘挡住。这样用户就可以看到他们正在输入的内容。这通常不如调整大小可取,因为用户可能需要关闭软键盘才能到达窗口的模糊部分并与之交互。
另外,请参阅此博客,
http://android-developers.blogspot.com/2009/04/updating-applications-for-on-screen.html
类似的,
<activity
android:label="@string/app_name"
android:name=".MainActivity" android:windowSoftInputMode="adjustNothing">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
【讨论】:
我们试过了,但没用。当您单击 EditText 时,它仍然会上升。不过还是谢谢! 哦,可以试试这个吗? android:windowSoftInputMode="adjustNothing" 我们已经尝试过了。由于某种原因,Manifest 中的所有标签都不能像我们想要的那样工作。 这是我们遇到问题的活动的代码 【参考方案2】:在你的 onCreate() 中添加这一行:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
这是之前的样子: https://imgur.com/a/DPd8eoD
之后: https://imgur.com/a/LxgW6fn
【讨论】:
以上是关于键盘向上时如何调整列表视图的大小?的主要内容,如果未能解决你的问题,请参考以下文章