android - 全屏 ScrollView

标签 android android-scrollview

我必须在全屏模式下开发一个应用程序,现在我有一个公式 带有一些文本编辑器和一些按钮。如果键盘弹出它隐藏 两个按钮,所以我将所有内容都放入 ScrollView 中:

    <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 工作?

最佳答案

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

android:fillViewport="true" 

当设置为 true 时,此属性会导致 ScrollView 的子项在需要时扩展到 ScrollView 的高度。当子级高于 ScrollView 时,该属性无效。

此外,将 fill_parent 布局尺寸更改为 match_parent,因为 fill_parent 已弃用,您可以摆脱任何烦人的警告。

此外,将 LinearLayoutlayout_height 属性更改为 match_parent 以便它会随 ScrollView 一起调整大小屏幕配置更改,例如拉起键盘。

此外,与@karvoynistas 的建议类似,您应该看看 windowSoftInputMode属性(property)。

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

<activity
    android:windowSoftInputMode="stateVisible|adjustResize"
    ...>

    <!-- ... -->

</activity>

这样做的效果是(根据 Android docs ):

To ensure that the system resizes your layout to the available space—which ensures that all of your layout content is accessible (even though it probably requires scrolling)

adjustPan 值添加到 windowSoftInputMode 属性可能有效,但并不是您想要的,因为它可能会导致一些异常影响(请阅读下文)。

Android Docs 两个值的比较:

调整调整大小

The activity's main window is always resized to make room for the soft keyboard on screen.

调整平移

The activity's main window is not resized to make room for the soft keyboard. Rather, the contents of the window are automatically panned so that the current focus is never obscured by the keyboard and users can always see what they are typing. This is generally less desirable than resizing, because the user may need to close the soft keyboard to get at and interact with obscured parts of the window.

关于android - 全屏 ScrollView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26562402/

相关文章:

android - fragment 在 Activity 结果调用后关闭

android - EditText 在 ScrollView 内不可滚动

android - 如何将滚动条/ View 置于顶部位置?

android - ScrollView 没有显示第一项

android - 带选择器的自定义水平 ScrollView

android - J2V8 和 Stetho

java - 如何在 Android 中打开具有 Uri 的文件?

android - 网格图像并水平滑动屏幕以获得下一个图像网格

android - 操作栏中的搜索小部件不显示默认文本

java - Android ScrollView,检查当前是否滚动