滚动包含编辑文本的滚动视图

时间:2013-07-15 11:59:05

标签: android scroll android-edittext scrollview

我的滚动视图包含一个线性布局,其中还包含一些编辑文本字段。现在,当我点击底部的编辑文本字段时,会出现软键盘,但我的问题是它涵盖了编辑文本字段。这是我在android清单文件中声明的活动:

<activity android:name="me.example.scrollview.LoginActivity" android:label="@string/title_activity_login" android:theme="@android:style/Theme.Black.NoTitleBar" android:windowSoftInputMode="stateHidden|adjustResize|adjustPan" > </activity>

这是我此活动的layout.xml文件。

<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="@android:color/darker_gray"
tools:context=".LoginActivity" >

<ScrollView
    android:id="@+id/login_sv_login_container"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:isScrollContainer="true"
    android:background="@android:color/transparent" >

    <LinearLayout
        android:id="@+id/login_ll_container"
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="230dp"
        android:layout_gravity="center_horizontal"
        android:background="@android:color/transparent"
        android:orientation="vertical" >

        <EditText
            android:id="@+id/txt_username"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:layout_gravity="center_horizontal"
            android:background="@drawable/rounded_edittext"
            android:ems="10"
            android:inputType="textEmailAddress"
            android:maxLines="1"
            android:singleLine="true" >

            <requestFocus />
        </EditText>

        <EditText
            android:id="@+id/txt_phone"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:layout_marginTop="10dp"
            android:background="@drawable/rounded_edittext"
            android:ems="10"
            android:inputType="phone"
            android:maxLines="1"
            android:singleLine="true" />

        <EditText
            android:id="@+id/txt_password"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:layout_marginTop="10dp"
            android:background="@drawable/rounded_edittext"
            android:ems="10"
            android:inputType="textPassword"
            android:maxLines="1"
            android:singleLine="true" />

        <Button
            android:id="@+id/btn_login"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:layout_marginTop="10dp"
            android:background="@drawable/ic_login"
            android:text="" />
    </LinearLayout>
</ScrollView>

现在请帮助我,因为我对android编程很新。我无法修复此问题,无法在不调整主窗口大小的情况下找到滚动滚动视图的方法。我只希望滚动视图在软键盘出现时进行滚动。提前提示。

enter image description here

3 个答案:

答案 0 :(得分:0)

您可以使用YOURSCROLLVIEW.scrollTo(int x,int y)或YOURSCROLLVIEW.smoothScrollTo(int x,int y)将滚动视图移动到适当的坐标,以便显示编辑文本框和键盘。

可以找到有关这些函数和其他scrollview函数的更多信息on the android developer reference page.

答案 1 :(得分:0)

您可以尝试:

ScrollView scroll = (ScrollView)findViewById(R.id.scrollview);
scroll.scrollTo(0, sv.getBottom());

scroll.scrollTo(5, 10);

答案 2 :(得分:0)

之前指出的解决方案都可行。但是如果edittext位于ListView的底部,它仍然会被屏幕键盘覆盖,那么可能仍然存在问题。不确定滚动视图是否可以滚动到没有更多内容的位置。

我所看到的是你可能会在清单中使用两个矛盾的标志:

android:windowSoftInputMode="stateHidden|adjustResize|adjustPan" > </activity>

adjustResize和adjustPan不能合并。仅使用adjustResize尝试它的外观。这应该避免键盘覆盖您的任何视图。