我试图让我的活动可滚动,所以我将相对布局包含在scrollview中。但它的作用是将整个布局向上移动。有人可以帮助解决问题吗?
这是活动的xml文件;
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent">
<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="wrap_content"
tools:context="nmss.example.com.coach.UserProfile">
<ImageView
android:id="@+id/iv_dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/tv_statusd"
android:layout_alignParentStart="true"
android:layout_marginLeft="37dp"
android:layout_marginStart="17dp"
app:srcCompat="@mipmap/ic_launcher" />
<EditText
android:id="@+id/tv_statusd"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:layout_above="@+id/et_age"
android:layout_alignParentEnd="true"
android:layout_marginBottom="19dp"
android:layout_marginEnd="11dp"
android:layout_marginRight="11dp"
android:ems="10"
android:hint="Status"
android:imeOptions="actionNext"
android:inputType="textPersonName"
android:maxLines="1"
android:maxLength="80"/>
<EditText
android:id="@+id/et_age"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/et_height"
android:layout_alignStart="@+id/tv_statusd"
android:layout_marginBottom="28dp"
android:ems="10"
android:hint="Age"
android:imeOptions="actionNext"
android:inputType="number" />
<EditText
android:id="@+id/et_height"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/et_weight"
android:layout_alignStart="@+id/et_age"
android:layout_marginBottom="23dp"
android:ems="10"
android:hint="Height"
android:imeOptions="actionNext"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/et_weight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/et_exp"
android:layout_alignStart="@+id/et_height"
android:layout_marginBottom="22dp"
android:ems="10"
android:hint="Weight"
android:imeOptions="actionNext"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/et_exp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/et_bio"
android:layout_alignStart="@+id/et_weight"
android:layout_marginBottom="17dp"
android:ems="10"
android:hint="Experiences"
android:imeOptions="actionNext"
android:inputType="textMultiLine" />
<EditText
android:id="@+id/et_bio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/btn_done"
android:layout_alignStart="@+id/et_exp"
android:layout_marginBottom="33dp"
android:ems="10"
android:hint="Bio"
android:imeOptions="actionDone"
android:inputType="textMultiLine" />
<Button
android:id="@+id/btn_done"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="35dp"
android:text="Done" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="11dp"
android:text="PROFILE"
android:textAllCaps="true"
android:textSize="24sp"
android:textStyle="bold" />
</RelativeLayout>
</ScrollView>
这是添加scrollview
之前的布局预览这是添加scrollview
后的布局预览答案 0 :(得分:2)
将此属性添加到Scroll View
。修改您的Scroll View
,如下所示。无需替换任何其他layout
。
此属性android:fillViewport="true"
和android:scrollbars="vertical"
将执行此操作。
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:scrollbars="vertical">
This displays the elements properly. But when I click on an edit text, the whole layout shifts upwards and everything gets haphazard. What to do for that?
将此行添加到Activity
并尝试。 Adjust Resize
和Adjust Pan
会这样做。
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
尝试在manifest activity
内定义。
<activity
android:name=".TestActivity"
android:windowSoftInputMode="stateHidden|adjustResize">
使用此修改后的XML
。做了一些修改。
<?xml version="1.0" encoding="utf-8"?>
<ScrollView 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:fillViewport="true"
android:scrollbars="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:context="nmss.example.com.coach.UserProfile">
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="11dp"
android:text="PROFILE"
android:textAllCaps="true"
android:textSize="24sp"
android:textStyle="bold" />
<ImageView
android:id="@+id/iv_dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/tv_statusd"
android:layout_alignParentStart="true"
android:layout_marginLeft="37dp"
android:layout_marginStart="17dp"
app:srcCompat="@mipmap/ic_launcher"
tools:ignore="RtlCompat" />
<EditText
android:id="@+id/tv_statusd"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_below="@+id/textView2"
android:layout_marginEnd="11dp"
android:layout_marginRight="11dp"
android:layout_marginTop="30dp"
android:ems="10"
android:hint="Status"
android:imeOptions="actionNext"
android:inputType="textPersonName"
android:maxLength="80"
android:maxLines="1"
tools:ignore="RtlCompat" />
<EditText
android:id="@+id/et_age"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/tv_statusd"
android:layout_below="@+id/tv_statusd"
android:layout_marginTop="10dp"
android:ems="10"
android:hint="Age"
android:imeOptions="actionNext"
android:inputType="number"
android:maxLines="1"
tools:ignore="RtlCompat" />
<EditText
android:id="@+id/et_height"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/et_age"
android:layout_below="@+id/et_age"
android:layout_marginTop="10dp"
android:ems="10"
android:hint="Height"
android:imeOptions="actionNext"
android:inputType="numberDecimal"
android:maxLines="1"
tools:ignore="RtlCompat" />
<EditText
android:id="@+id/et_weight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/et_height"
android:layout_below="@+id/et_height"
android:layout_marginTop="10dp"
android:ems="10"
android:hint="Weight"
android:imeOptions="actionNext"
android:inputType="numberDecimal"
android:maxLines="1"
tools:ignore="RtlCompat" />
<EditText
android:id="@+id/et_exp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/et_weight"
android:layout_below="@+id/et_weight"
android:layout_marginTop="10dp"
android:ems="10"
android:hint="Experiences"
android:imeOptions="actionNext"
android:inputType="text"
android:maxLines="3"
tools:ignore="RtlCompat" />
<EditText
android:id="@+id/et_bio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/et_exp"
android:layout_below="@+id/et_exp"
android:layout_marginTop="10dp"
android:ems="10"
android:hint="Bio"
android:imeOptions="actionDone"
android:inputType="text"
android:maxLines="3"
tools:ignore="RtlCompat" />
<Button
android:id="@+id/btn_done"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/et_bio"
android:layout_centerHorizontal="true"
android:layout_marginTop="15dp"
android:text="Done" />
</RelativeLayout>
</ScrollView>
答案 1 :(得分:0)
将RelativeLayout替换为LinearLayout,它可以正常工作。
答案 2 :(得分:0)
只需将RelativeLayout替换为LinearLayout
即可或者使用此
android:fillViewport="true"
android:scrollbars="vertical"
在Scrollview中。