在Android中出现软键盘时,将ScrollView滚动到底部?

时间:2014-02-16 23:13:58

标签: android android-layout android-softkeyboard android-scrollview

因此,我正在制作一个短信应用,只是为了解决Android编程中的不同内容,并且还遇到了一个我无法在线找到答案的问题。我已经尝试过这个网站和其他Android编程论坛的几个不同的答案,而不是其中一个每次都有效。有些示例每隔一段时间都有效,而其他示例只能使用一次。这是应用程序中唯一需要考虑的UI功能。

我有一个XML布局文件:          

    <RelativeLayout
        android:id="@+id/rlActionBar2"
        android:layout_width="fill_parent"
        android:layout_height="44dp" >
    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/rlAddContact"
        android:layout_width="fill_parent"
        android:layout_height="44dp"
        android:layout_below="@+id/rlActionBar2"
        android:background="@drawable/new_message_background"
        android:padding="0dp" >

        <TextView
            android:id="@+id/tvTo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:layout_marginLeft="8dp"
            android:text="@string/text_to"
            android:textColor="#7F7F7F"
            android:textSize="17sp" />

        <EditText
            android:id="@+id/txtContact"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@id/tvTo"
            android:layout_marginLeft="6dp"
            android:layout_toLeftOf="@+id/btnAddContact"
            android:layout_toRightOf="@id/tvTo"
            android:background="#00000000"
            android:hint="@string/contact_name"
            android:inputType="textPersonName"
            android:maxLines="1"
            android:textColor="#000000"
            android:textSize="16sp" >
        </EditText>

        <Button
            android:id="@+id/btnAddContact"
            android:layout_width="28.5dp"
            android:layout_height="28.5dp"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginLeft="3dp"
            android:layout_marginRight="3dp"
            android:background="@drawable/add_button"
            android:padding="0dp" />
    </RelativeLayout>

    <ScrollView
        android:id="@+id/svMessageView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_above="@+id/rlNewMessage"
        android:layout_alignParentLeft="true"
        android:layout_below="@id/rlAddContact"
        android:background="#DBE2ED" >

        <LinearLayout
            android:id="@+id/llMessages"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#DBE2ED"
            android:isScrollContainer="true"
            android:orientation="vertical"
            android:paddingTop="11dp" >
        </LinearLayout>
    </ScrollView>

    <RelativeLayout
        android:id="@+id/rlNewMessage"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="@drawable/messagebar_background"
        android:gravity="bottom"
        android:padding="0dp" >

        <Button
            android:id="@+id/btnAttatchment"
            android:layout_width="26dp"
            android:layout_height="26dp"
            android:layout_alignBottom="@+id/txtMessageBox"
            android:layout_marginLeft="6dp"
            android:background="@drawable/camera_icon" />

        <EditText
            android:id="@+id/txtMessageBox"
            android:layout_width="253dp"
            android:layout_height="wrap_content"
            android:layout_marginBottom="6dp"
            android:layout_marginLeft="6dp"
            android:layout_marginTop="8dp"
            android:layout_toRightOf="@id/btnAttatchment"
            android:background="@drawable/messagebox_background"
            android:hint="@string/app_name"
            android:inputType="textMultiLine"
            android:maxLines="6"
            android:minHeight="26dp"
            android:textSize="17sp" >
        </EditText>

        <Button
            android:id="@+id/btnSend"
            android:layout_width="58dp"
            android:layout_height="26dp"
            android:layout_alignBottom="@id/txtMessageBox"
            android:layout_alignParentRight="true"
            android:layout_marginRight="6dp"
            android:background="@drawable/send_button"
            android:text="@string/send_button"
            android:textAlignment="center"
            android:textColor="#FFFFFF"
            android:textSize="14sp"
            android:textStyle="bold" />
    </RelativeLayout>

</RelativeLayout>

我的问题是每次软键盘进入屏幕供用户输入时,让ScrollView svMessageView 自动滚动到底部。当键盘出现时,RelativeLayout rlNewMessage 向上移动,并且 svMessageView 的底部设置为坚持 rlNewMessage 的顶部并且可以正常工作,但是我无法将 svMessageView 单独滚动到底部。

图片:

软键盘加载后(不是我想要的):http://imgur.com/8Kptge3

软键盘加载后(我想要的):http://imgur.com/BcDcFPY

如果您需要更多信息来解决问题,请告诉我,我会尽快发布。

2 个答案:

答案 0 :(得分:0)

我没有测试它,但你可以尝试scrollView.fullScroll(View.FOCUS_DOWN);也许在EditText触摸监听器上。

答案 1 :(得分:-1)

Manifest.xml Activity中添加此内容,然后反馈

android:windowSoftInputMode="adjustNothing"