如何使用 ScrollView 设置布局?
How to setup a layout with ScrollView?
我正在学习 Android,现在我遇到了 ScrollView
的问题。
我小时候使用 ScrollView
作为布局的主要容器,LinearLayout
是因为我希望我的屏幕支持纵向和横向,但这并不像我想要的那样工作。
如下图所示,space在图片没有出现之前,甚至图片都被剪切了,因为键盘将布局推高了,而且不适合屏幕在横向方向。
谁能帮我设置一个布局来支持滚动而不丢失布局的原始设计?
布局代码:
<?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>
布局预览:
在我的设备中测试的布局:
谢谢。
尝试添加
android:windowSoftInputMode="adjustPan"
在您的 activity 内的清单文件中。
<activity android:name=".YourActivity"
android:windowSoftInputMode="adjustPan">
</activity>
您将找到有关 windowSoftInputMode
的信息
更改您的 LinearLayout 属性
android:gravity="center"
而不是
android:layout_gravity="center"
它会工作..
我正在学习 Android,现在我遇到了 ScrollView
的问题。
我小时候使用 ScrollView
作为布局的主要容器,LinearLayout
是因为我希望我的屏幕支持纵向和横向,但这并不像我想要的那样工作。
如下图所示,space在图片没有出现之前,甚至图片都被剪切了,因为键盘将布局推高了,而且不适合屏幕在横向方向。
谁能帮我设置一个布局来支持滚动而不丢失布局的原始设计?
布局代码:
<?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>
布局预览:
在我的设备中测试的布局:
谢谢。
尝试添加
android:windowSoftInputMode="adjustPan"
在您的 activity 内的清单文件中。
<activity android:name=".YourActivity"
android:windowSoftInputMode="adjustPan">
</activity>
您将找到有关 windowSoftInputMode
的信息更改您的 LinearLayout 属性
android:gravity="center"
而不是
android:layout_gravity="center"
它会工作..