当存在软件键盘时,我在调整listview大小时遇到了一些问题。基本上我的我正在使用谷歌地图api,其中地图覆盖整个屏幕,透明的动作栏,我有一个车辆列表在地图上的片段从右侧滑入。当右面板显示时,整个布局如下所示:
现在我正在使用android:windowSoftInputMode="adjustPan"
,所以当我专注于编辑文本和键盘幻灯片时,它看起来像这样:
这不好,因为我无法看到整个车辆。我尝试过使用android:windowSoftInputMode="adjustResize"
,但由于我使用的是透明操作栏,因此会发生这种情况:
我可以看到整个listView,它滚动得很好,但我的EditText现在在ActionBar下。基本上我想要实现的是两种情况的组合,所以它看起来像这样:
现在这是我的列表
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg"
tools:context="hidden">
<EditText
android:id="@+id/vehicle_search_edit_text"
android:layout_width="fill_parent"
android:layout_height="45dp"
android:focusable="true"
android:hint="Search"
android:imeOptions="actionSearch"
android:singleLine="true" />
<ListView
android:id="@+id/list_vehicles"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/vehicle_search_edit_text"
android:animateLayoutChanges="true"
android:fastScrollEnabled="true"
/>
</RelativeLayout>
这是我的MainActivity的布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_root"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:id="@+id/layout_root_map"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<RelativeLayout
android:id="@+id/layout_root_vehicles"
android:layout_width="350dp"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true" />
<RelativeLayout
android:id="@+id/layout_root_settings"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true" />
</RelativeLayout>
我熟悉设置布局的高度programaticaly,因为我已经在布局中使用了listfragment嵌套。 ActionBar必须保持透明,因为这是我老板想要的。我一整天都在寻找解决方案,但我发现的任何东西都不适合我,所以我会非常感谢你的帮助。
答案 0 :(得分:3)
我相信,因为您的操作栏与Google地图使用的操作栏相似,所以通常由其占用的空间可以被其他布局(在您的情况下为片段)使用。您可以尝试为片段容器指定填充或边距,例如:
android:paddingTop="?android:attr/actionBarSize"
(操作栏的大小)。
与
一起android:windowSoftInputMode="adjustResize"
这应该有效。
填充值不满足您,手动提供更合适的值。
答案 1 :(得分:0)
在您的清单文件中,在您的活动中添加android:windowSoftInputMode="adjustPan"
。
例如,
<activity
android:name="com.sample.ListViewsActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan" >
</activity>
我认为,这解决了你的问题。试试吧。
答案 2 :(得分:0)
API说明如下 http://developer.android.com/reference/android/widget/ListView.html
TRANSCRIPT_MODE_ALWAYS_SCROLL =无论当前可见哪些项目,列表都会自动滚动到底部。
setTranscriptMode(int mode)=将列表或网格放入脚本模式。
请测试,看它是否有效!
setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
答案 3 :(得分:0)
在AndroidManifest.xml中添加:
<activity android:name=".MainActivity"
android:windowSoftInputMode="stateHidden|adjustResize"/>
</activity>
您的活动 并添加两个参数:
<ListView
android:stackFromBottom="true"
android:transcriptMode="normal"/>