1

美好的一天(或晚上,或晚上)我正在为安卓开发一个应用程序,我对一件事非常好奇。我有一个活动,用户与另一个人聊天,比如“im”聊天。底部有一个 EditText,顶部有某种操作栏。我需要的是当用户输入消息并且软件键盘在屏幕上时,我的活动应该向上移动,但操作栏仍然应该“粘”在屏幕顶部,因为它上面有一些有价值的控件。同样,这不是 ActionBar,而只是父垂直线性布局中的 48dp 高度布局。所以我需要知道当布局移出屏幕时,是否有一种简单的方法可以防止它移到顶部。我试图把所有东西都放在 FrameLayout 中,然后把这个栏放在上面,但是在键盘打开时它也会离开屏幕......

4

4 回答 4

0

使用 RelativeLayout 作为您的基本布局并将 android:layout_alignParentTop="true" 添加到您的操作栏以保持它

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <LinearLayout
        android:id="@+id/action_bar_layout"
        android:layout_width="match_parent"
        android:layout_height="48dp"
        android:layout_alignParentTop="true" >
    </LinearLayout>

    <TextView
        android:id="@+id/text_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true" />

</RelativeLayout>
于 2013-03-13T20:26:22.300 回答
0

在 AndroidManifest 的 Activity 上,您应该输入以下内容: android:windowSoftInputMode="adjustResize"

于 2013-03-13T20:18:04.450 回答
0

使用这样的东西:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <com.myapp.MyActionBar
        android:layout_width="match_parent"
        android:layout_height="48dp"/>

    <LinearLayout
        android:id="@+id/mylayout"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1dp"/>

    <!-- Add your edittext and button -->

</LinearLayout>

这将确保操作栏和 edittext + 按钮始终在屏幕上,并且mylayout占据屏幕的其余部分。当你的键盘出现时,它mylayout会缩小。

于 2013-03-13T20:18:18.673 回答
0

尝试将 android:windowSoftInputMode="adjustResize" 添加到清单中的活动。这告诉 Android 在键盘出现时完全调整布局的大小,而不是平移它。请注意,如果整个布局没有足够的空间,这仍然不起作用。但是如果您的顶级布局是RelativeLayout,您应该能够使其工作,编辑文本设置为底部对齐,顶部栏对齐顶部,中间部分为fill_parent并且位于编辑文本上方和下方酒吧。

于 2013-03-13T20:18:20.520 回答