由于新需求要求:个人信息页面最顶部要增加两条姓氏全拼,姓名全拼,需求文档如下:
之前布局用的是NestedScrollView内嵌RecyclerView,RecyclerView位于子布局的第一个,显示效果上没有什么问题。xml布局如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:background="@color/bg_grey"
android:orientation="vertical">
<include layout="@layout/comment_back_toolbar" />
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:id="@+id/rv_personal_center"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/rgbefeff3"
android:nestedScrollingEnabled="false"
android:overScrollMode="never"
/>
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
</LinearLayout>
本来也想把新需求的两条用RecyclerView,但是布局相差太多,逻辑处理上比较繁琐,后来决定在RecyclerView上面增加两个子布局用来显示姓氏全拼,姓名全拼,xml布局如下:
<LinearLayout 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:background="@color/bg_grey"
android:orientation="vertical">
<include layout="@layout/comment_back_toolbar" />
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/personal_layout_lastname"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30px"
android:background="@color/white"
>
<TextView
android:id="@+id/personal_layout_lastname_tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="姓氏全拼"
android:textSize="44px"
android:paddingLeft="44px"
android:layout_marginTop="50px"
android:layout_marginBottom="50px"
android:textColor="@color/rgb666666"/>
<ImageView
android:id="@+id/personal_layout_lastname_img_arrow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:paddingRight="44px"
android:layout_alignParentRight="true"
android:src="@mipmap/icon_edit"/>
<com.sinosig.ygqd.widget.ClearableEditTextWithIcon
android:id="@+id/personal_layout_lastname_fix_info"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerVertical="true"
android:layout_marginLeft="16dp"
android:layout_marginRight="4dp"
android:visibility="gone"
android:inputType="text"
android:maxLength="50"
android:layout_toLeftOf="@+id/personal_layout_lastname_img_arrow"
android:layout_toRightOf="@id/personal_layout_lastname_tv_title"
android:background="@color/transparent"
android:gravity="right|center_vertical"
android:imeOptions="actionDone"
android:lines="1"
android:singleLine="true"
android:textColor="@color/black"
android:textSize="16sp"
/>
<TextView
android:id="@+id/personal_layout_lastname_tv_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="例:zhang"
android:layout_toLeftOf="@+id/personal_layout_lastname_img_arrow"
android:layout_toRightOf="@+id/personal_layout_lastname_tv_title"
android:textSize="43px"
android:gravity="right"
android:textColor="@color/rgb999999"
android:layout_centerVertical="true"
android:layout_marginLeft="30px"
android:layout_marginRight="30px"
android:maxLines="1"
android:maxLength="20"
android:ellipsize="end"
/>
<View
android:layout_width="match_parent"
android:layout_height="2px"
android:layout_marginLeft="44px"
android:layout_alignParentBottom="true"
android:background="@color/rgbe1e1e1" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/personal_layout_firstname"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
>
<TextView
android:id="@+id/personal_layout_firstname_tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="名字全拼"
android:textSize="44px"
android:paddingLeft="44px"
android:layout_marginTop="50px"
android:layout_marginBottom="50px"
android:textColor="@color/rgb666666"/>
<ImageView
android:id="@+id/personal_layout_firstname_img_arrow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:paddingRight="44px"
android:layout_alignParentRight="true"
android:src="@mipmap/icon_edit"/>
<com.sinosig.ygqd.widget.ClearableEditTextWithIcon
android:id="@+id/personal_layout_firstname_fix_info"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerVertical="true"
android:layout_marginLeft="16dp"
android:layout_marginRight="4dp"
android:visibility="gone"
android:inputType="text"
android:maxLength="20"
android:layout_toLeftOf="@+id/personal_layout_firstname_img_arrow"
android:layout_toRightOf="@id/personal_layout_firstname_tv_title"
android:background="@color/transparent"
android:gravity="right|center_vertical"
android:imeOptions="actionDone"
android:lines="1"
android:singleLine="true"
android:textColor="@color/black"
android:textSize="16sp"
/>
<TextView
android:id="@+id/personal_layout_firstname_tv_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="例:meina"
android:layout_toLeftOf="@+id/personal_layout_firstname_img_arrow"
android:layout_toRightOf="@+id/personal_layout_firstname_tv_title"
android:textSize="43px"
android:gravity="right"
android:textColor="@color/rgb999999"
android:layout_centerVertical="true"
android:layout_marginLeft="30px"
android:layout_marginRight="30px"
android:maxLines="1"
android:maxLength="50"
android:ellipsize="end"
/>
<View
android:layout_width="match_parent"
android:layout_height="2px"
android:layout_marginLeft="44px"
android:layout_alignParentBottom="true"
android:background="@color/rgbe1e1e1" />
</RelativeLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/rv_personal_center"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/rgbefeff3"
android:nestedScrollingEnabled="false"
android:overScrollMode="never"
/>
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
</LinearLayout>
修改完需求后,在手机打开页面并没有达到预期的效果,布局没有显示在顶部,如下图所示:
需要向下滑动才显示出来
通过在网上查找,找到了解决方法,原来在这种情况下 RecyclerView会率先获取焦点,因此就会造成打开页面时不是显示在顶部,而是到一个RecyclerView上。
解决方案就是将焦点从新手动放给顶部的控件
在NestedScrollView的第一个子布局中加入
android:focusable="true"
android:focusableInTouchMode="true"
在第一个RelativeLayout中添加上面两句代码,修改后xml布局如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:background="@color/bg_grey"
android:orientation="vertical">
<include layout="@layout/comment_back_toolbar" />
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/personal_layout_lastname"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30px"
android:background="@color/white"
android:focusable="false"
android:focusableInTouchMode="true"
>
<TextView
android:id="@+id/personal_layout_lastname_tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="姓氏全拼"
android:textSize="44px"
android:paddingLeft="44px"
android:layout_marginTop="50px"
android:layout_marginBottom="50px"
android:textColor="@color/rgb666666"/>
<ImageView
android:id="@+id/personal_layout_lastname_img_arrow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:paddingRight="44px"
android:layout_alignParentRight="true"
android:src="@mipmap/icon_edit"/>
<com.sinosig.ygqd.widget.ClearableEditTextWithIcon
android:id="@+id/personal_layout_lastname_fix_info"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerVertical="true"
android:layout_marginLeft="16dp"
android:layout_marginRight="4dp"
android:visibility="gone"
android:inputType="text"
android:maxLength="50"
android:layout_toLeftOf="@+id/personal_layout_lastname_img_arrow"
android:layout_toRightOf="@id/personal_layout_lastname_tv_title"
android:background="@color/transparent"
android:gravity="right|center_vertical"
android:imeOptions="actionDone"
android:lines="1"
android:singleLine="true"
android:textColor="@color/black"
android:textSize="16sp"
tools:text="我哥哥"
/>
<TextView
android:id="@+id/personal_layout_lastname_tv_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="例:zhang"
android:layout_toLeftOf="@+id/personal_layout_lastname_img_arrow"
android:layout_toRightOf="@+id/personal_layout_lastname_tv_title"
android:textSize="43px"
android:gravity="right"
android:textColor="@color/rgb999999"
android:layout_centerVertical="true"
android:layout_marginLeft="30px"
android:layout_marginRight="30px"
android:maxLines="1"
android:maxLength="20"
android:ellipsize="end"
/>
<View
android:layout_width="match_parent"
android:layout_height="2px"
android:layout_marginLeft="44px"
android:layout_alignParentBottom="true"
android:background="@color/rgbe1e1e1" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/personal_layout_firstname"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
>
<TextView
android:id="@+id/personal_layout_firstname_tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="名字全拼"
android:textSize="44px"
android:paddingLeft="44px"
android:layout_marginTop="50px"
android:layout_marginBottom="50px"
android:textColor="@color/rgb666666"/>
<ImageView
android:id="@+id/personal_layout_firstname_img_arrow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:paddingRight="44px"
android:layout_alignParentRight="true"
android:src="@mipmap/icon_edit"/>
<com.sinosig.ygqd.widget.ClearableEditTextWithIcon
android:id="@+id/personal_layout_firstname_fix_info"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerVertical="true"
android:layout_marginLeft="16dp"
android:layout_marginRight="4dp"
android:visibility="gone"
android:inputType="text"
android:maxLength="20"
android:layout_toLeftOf="@+id/personal_layout_firstname_img_arrow"
android:layout_toRightOf="@id/personal_layout_firstname_tv_title"
android:background="@color/transparent"
android:gravity="right|center_vertical"
android:imeOptions="actionDone"
android:lines="1"
android:singleLine="true"
android:textColor="@color/black"
android:textSize="16sp"
tools:text="我哥哥"
/>
<TextView
android:id="@+id/personal_layout_firstname_tv_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="例:meina"
android:layout_toLeftOf="@+id/personal_layout_firstname_img_arrow"
android:layout_toRightOf="@+id/personal_layout_firstname_tv_title"
android:textSize="43px"
android:gravity="right"
android:textColor="@color/rgb999999"
android:layout_centerVertical="true"
android:layout_marginLeft="30px"
android:layout_marginRight="30px"
android:maxLines="1"
android:maxLength="50"
android:ellipsize="end"
/>
<View
android:layout_width="match_parent"
android:layout_height="2px"
android:layout_marginLeft="44px"
android:layout_alignParentBottom="true"
android:background="@color/rgbe1e1e1" />
</RelativeLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/rv_personal_center"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/rgbefeff3"
android:nestedScrollingEnabled="false"
android:overScrollMode="never"
/>
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
</LinearLayout>
打开页面,显示效果如下:
问题解决