全屏滚动查看

时间:2014-10-25 12:31:52

标签: android android-scrollview

我必须以全屏模式开发应用程序,现在我有一个公式 一些textEdits和一些按钮。如果弹出键盘,它会隐藏 两个按钮,所以我将所有内容放入滚动视图:

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dip"
    tools:context="controller.RegsiterActivity" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/register_textview_firstname"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="5dip"
            android:singleLine="true"
            android:text="@string/text_firstname" />

        <EditText
            android:id="@+id/register_textedit_firstname"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dip"
            android:inputType="text" />

        <TextView
            android:id="@+id/register_textview_lastname"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="5dip"
            android:singleLine="true"
            android:text="@string/text_lastname" />

        <EditText
            android:id="@+id/register_textedit_lastname"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dip"
            android:inputType="text" />

        <TextView
            android:id="@+id/register_textview_email"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="5dip"
            android:singleLine="true"
            android:text="@string/text_email" />

        <EditText
            android:id="@+id/register_textedit_email"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dip"
            android:inputType="textEmailAddress" />

        <TextView
            android:id="@+id/register_text_password"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="5dip"
            android:singleLine="true"
            android:text="@string/text_password" />

        <EditText
            android:id="@+id/register_textedit_password"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dip"
            android:inputType="text" />

        <Button
            android:id="@+id/register_button_register"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/button_register" />

        <Button
            android:id="@+id/register_button_cancel"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/button_cancel" />

    </LinearLayout>

</ScrollView>

正如我所说,我必须全屏运行我的应用程序:

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >

但是当我现在运行我的应用程序时,没有出现scrollView,也没有滚动工作。

如何让scrollView工作?

3 个答案:

答案 0 :(得分:3)

您应该添加到ScrollView的第一个属性是:

android:fillViewport="true" 

设置为true时,如果需要,此属性会使滚动视图的子项扩展到ScrollView的高度。当孩子高于ScrollView时,该属性无效。

另外,将fill_parent布局维度更改为match_parent,因为fill_parent已被弃用,您可以摆脱任何恼人的警告。

此外,将layout_height的{​​{1}}属性更改为LinearLayout,以便在屏幕配置更改(例如拉起键盘)的同时调整match_parent。 / p>

此外,与@karvoynistas建议类似,您应该查看windowSoftInputMode属性。

您可以将此属性添加到您的活动中:

ScrollView

这种效果是(根据Android docs):

  

确保系统将布局调整到可用空间 - 这可确保您可以访问所有布局内容(即使可能需要滚动)

<activity android:windowSoftInputMode="stateVisible|adjustResize" ...> <!-- ... --> </activity> 值添加到adjustPan属性可能会有效但不完全符合您的要求,因为它可能会导致一些异常的影响(请参见下文)。

Android Docs比较两个值:

<强> adjustResize

  

活动的主窗口始终调整大小,以便为屏幕上的软键盘腾出空间。

<强> adjustPan

  

活动的主窗口未调整大小以便为软键盘腾出空间。相反,窗口的内容会自动平移,以便键盘不会遮挡当前焦点,用户可以随时看到他们正在键入的内容。这通常不如调整大小,因为用户可能需要关闭软键盘才能进入并与窗口的模糊部分进行交互。

答案 1 :(得分:0)

如果在键盘出现之前定位没问题,则无需为此放置scrollView。 要避免键盘滚动问题,您只需在清单文件中设置以下特定活动声明:

android:windowSoftInputMode="adjustPan"

答案 2 :(得分:0)

在应用程序的清单文件中,添加到您想要以下行的<activity/>

android:windowSoftInputMode="stateAlwaysHidden|adjustResize|adjustPan"

link说明了同样的问题。