【问题标题】:How to setup a layout with ScrollView?如何使用 ScrollView 设置布局?
【发布时间】:2019-09-23 14:38:45
【问题描述】:

我正在学习 Android,现在我遇到了 ScrollView 的问题。

我使用 ScrollView 作为布局的主容器,并使用 LinearLayout 作为孩子,因为我希望我的屏幕支持纵向和横向,但这不是我想要的。

正如您在下面的图片中看到的那样,图片之前的空间没有出现,即使是图片也被剪切了,因为键盘推动了布局并且它不适合屏幕,横向方向也是如此。

谁能帮我设置一个布局以支持滚动而不丢失布局的原始设计?

布局代码:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="@drawable/gradient_background"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true">

        <LinearLayout
            xmlns:app="http://schemas.android.com/apk/res-auto"
            xmlns:tools="http://schemas.android.com/tools"
            tools:context=".LoginActivity"
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:padding="30dp">

            <ImageView
                android:id="@+id/sign_in_logo"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/trivia_wars_logo"
                android:layout_gravity="center"
                android:rotation="-8"
                android:scaleX="0.75"
                android:scaleY="0.75"
                android:padding="5dp"/>

            <com.google.android.material.textfield.TextInputLayout
                android:id="@+id/sign_in_input_layout_username"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                style="@style/TextInputLayoutStyle"
                android:layout_marginTop="15dp">

                <EditText
                    android:id="@+id/sign_in_input_username"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:hint="@string/hint_email_username"
                    style="@style/EditTextStyle"
                    android:inputType="textPersonName"/>

            </com.google.android.material.textfield.TextInputLayout>

            <com.google.android.material.textfield.TextInputLayout
                android:id="@+id/sign_in_input_layout_password"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                style="@style/PasswordInputLayoutStyle"
                android:layout_marginTop="15dp"
                app:passwordToggleEnabled="true">

                <EditText
                    android:id="@+id/sign_in_input_password"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:hint="@string/hint_password"
                    style="@style/EditTextStyle"
                    android:inputType="textPassword"/>

            </com.google.android.material.textfield.TextInputLayout>

            <com.google.android.material.button.MaterialButton
                android:id="@+id/sign_in_action_btn"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="50dp"
                android:paddingTop="12dp"
                android:paddingBottom="12dp"
                style="@style/RoundedButtonStyle"
                android:text="@string/sign_in"/>

            <com.google.android.material.button.MaterialButton
                android:id="@+id/sign_in_sign_up_btn"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:paddingTop="12dp"
                android:paddingBottom="12dp"
                style="@style/OutlineRoundedButtonStyle"
                android:text="@string/sign_up"/>
        </LinearLayout>
</ScrollView>

布局预览:

在我的设备中测试的布局:

谢谢。

【问题讨论】:

  • 当您使用滚动视图时,每当键盘打开时,它都会自动将布局向上移动。
  • 是的,但是我不知道如何处理键盘打开时图像前面的空格@Madhav
  • 正如我在上一张图片中看到的,您的重点是密码字段。你能把它删除并检查天气滚动是否可用
  • 也尝试将边距添加到 'sign_in_logo' 这仅作为上边距

标签: android android-layout scrollview android-linearlayout android-design-library


【解决方案1】:

尝试添加

android:windowSoftInputMode="adjustPan" 

在您的活动内的清单文件中。

<activity android:name=".YourActivity"
          android:windowSoftInputMode="adjustPan">

</activity>

你会找到关于windowSoftInputMode的信息

【讨论】:

    【解决方案2】:

    更改您的 LinearLayout 属性

    android:gravity="center"

    而不是

    android:layout_gravity="center"
    

    它会起作用的..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-30
      • 1970-01-01
      • 2011-08-07
      • 1970-01-01
      • 2019-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多