问题已经提出here。但是没有令人满意的答案,所以我再问一遍。
我有一个可滚动的用户注册表单,屏幕底部有一个固定的SignUp按钮。我需要在底部显示SignUp按钮,即它不应该是可滚动的。我使用RelativeLayout作为根容器。
我的视图层次结构为:
如果是android:windowSoftInputMode =" adjustNothing"
当我点击任何EditText时,软键盘会出现,但scrollview不能完全滚动。键盘背后的键盘空间相当于键盘的空间。我想让它可滚动。
如果是android:windowSoftInputMode =" adjustPan"
它的效果好一点,但不完全是我想要的方式。它推动我的整个屏幕向上,包括不希望的工具栏。
如果是android:windowSoftInputMode =" adjustResize"
它按下我的按钮,这根本不需要。
所以,请建议我一个可以用来满足我的要求的解决方案。
这是我的xml代码:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black"
tools:context=".activities.CreateAccountActivity">
<include
android:id="@+id/toolbar"
layout="@layout/app_toolbar" />
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/toolbar"
android:fillViewport="true"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"><!--android:paddingBottom="@dimen/activity_vertical_margin"-->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/ll_fields"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<EditText
android:id="@+id/et_first_name"
style="@style/create_account_edittext"
android:hint="@string/first_name" />
<EditText
android:id="@+id/et_last_name"
style="@style/create_account_edittext"
android:hint="@string/last_name" />
<EditText
android:id="@+id/et_dob"
style="@style/create_account_edittext"
android:hint="@string/date_of_birth" />
<EditText
android:id="@+id/et_email"
style="@style/create_account_edittext"
android:hint="@string/email"
android:inputType="textEmailAddress" />
<EditText
android:id="@+id/et_password"
style="@style/create_account_edittext"
android:hint="@string/password"
android:inputType="textPassword" />
<EditText
android:id="@+id/et_confirm_password"
style="@style/create_account_edittext"
android:hint="@string/confirm_password"
android:inputType="textPassword" />
<LinearLayout
android:id="@+id/ll_terms"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/separator_margin"
android:background="@color/et_create_account_bg"
android:orientation="horizontal"
android:padding="10dp">
<CheckBox
android:id="@+id/cb_terms"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:theme="@style/BrandedCheckbox" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:text="@string/accept_terms"
android:textColor="@color/white"
app:font="@string/font_helvetica_normal" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_subscription"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/et_create_account_bg"
android:orientation="horizontal"
android:padding="10dp">
<CheckBox
android:id="@+id/cb_subscription"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:theme="@style/BrandedCheckbox" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:gravity="center_vertical"
android:text="@string/subscription_details"
android:textColor="@color/white"
app:font="@string/font_helvetica_normal" />
</LinearLayout>
</LinearLayout>
<Button
android:id="@+id/btn_create_account"
style="@style/buttonStyle"
android:layout_alignParentBottom="true"
android:text="@string/create_account" />
</RelativeLayout>
</ScrollView>
我的证词是:
<activity
android:name=".activities.CreateAccountActivity"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar" />
答案 0 :(得分:0)
不要使用
android:windowSoftInputMode
因此默认情况下,当软键盘显示时,它无法调整... 所以不要使用其中任何一个......
布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context=".ScrollView"
tools:showIn="@layout/activity_scroll_view">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName"
android:hint="Your Name..."/>
<EditText
android:id="@+id/editText2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName"
android:hint="Father's Name.."/>
<EditText
android:id="@+id/editText3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName"
android:hint="Mothers's Name.."/>
<EditText
android:id="@+id/editText4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName"
android:hint="Email Address.."/>
<EditText
android:id="@+id/editText5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName"
android:hint="Mobile No.."/>
<EditText
android:id="@+id/editText6"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName"
android:hint="Present Address.."/>
<EditText
android:id="@+id/editText7"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName"
android:hint="Parmanent Address.."/>
<EditText
android:id="@+id/editText8"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName"
android:hint="Company Name.."/>
<EditText
android:id="@+id/editText9"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName"
android:text="Name"/>
<EditText
android:id="@+id/editText15"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName"
android:text="Name"/>
<EditText
android:id="@+id/editText14"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName"
android:text="Name"/>
<EditText
android:id="@+id/editText10"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName"
android:text="Name"/>
<EditText
android:id="@+id/editText12"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName"
android:text="Name"/>
<EditText
android:id="@+id/editText13"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName"
android:text="Name"/>
<EditText
android:id="@+id/editText11"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName"
android:text="Name"/>
<Button
android:id="@+id/btn_signup"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="SignUp"/>
</LinearLayout>
</ScrollView>
活动的AndroidMaifest.xml中的代码
<activity
android:name=".ScrollView"
android:label="@string/title_activity_scroll_view"
android:theme="@style/AppTheme.NoActionBar">
</activity>
答案 1 :(得分:0)
在滚动视图中包裹您的布局,因为滚动视图只能有一个子项,最好将相对布局包装在其中。
<ScrollView>
<RelativeLayout>
...
</RelativeLayout>
</ScrollView>