【发布时间】: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