您好我在设计中面临一个问题,其xml如下。问题是我在嵌套的scrollview中使用了两个textview,button和recyclerview。当我运行时,此代码视图从recyclerview启动,但当我向下滚动时,那些textview,按钮是可见的。请帮助我如何从第一个视图开始查看,避免在移动设备内显示视图时直接关注recyclerview。我怎么解决这个问题?帮我。抱歉我的英语很差。
<android.support.v4.widget.NestedScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="false">
<LinearLayout
android:id="@+id/llMainContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="@dimen/padding_10">
<com.xyz.ui.widget.CustomEditTextView
android:id="@+id/etEmail"
style="@style/Widget.xyz.EditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/order_mobile_number"
android:inputType="text"
app:fontTextStyle="3" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="2">
<com.xyz.ui.widget.CustomEditTextView
android:id="@+id/etDateFrom"
style="@style/Widget.xyz.EditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_normal"
android:layout_weight="1"
android:drawableLeft="@drawable/ic_calendar"
android:drawablePadding="@dimen/spacing_normal"
android:drawableStart="@drawable/ic_calendar"
android:editable="false"
android:focusable="false"
android:hint="@string/date_from"
android:inputType="text"
app:fontTextStyle="3" />
<com.xyz.ui.widget.CustomEditTextView
android:id="@+id/etDateTo"
style="@style/Widget.xyz.EditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/margin_left_10"
android:layout_marginStart="@dimen/margin_left_10"
android:layout_marginTop="@dimen/spacing_normal"
android:layout_weight="1"
android:drawableLeft="@drawable/ic_calendar"
android:drawablePadding="@dimen/spacing_normal"
android:drawableStart="@drawable/ic_calendar"
android:editable="false"
android:focusable="false"
android:hint="@string/date_to"
android:inputType="text"
app:fontTextStyle="3" />
</LinearLayout>
<com.xyz.ui.widget.CustomTextView
android:id="@+id/txtGenerate"
style="@style/Theme.xyz.Button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_normal"
android:text="@string/generate_report"
android:textAllCaps="false"
app:fontTextStyle="1" />
<android.support.v7.widget.RecyclerView
android:id="@+id/rvPendingOrders"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_micro" />
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
答案 0 :(得分:1)
我按照以下方式管理我的代码,它对我来说很好。看一下完整的布局代码:
<LinearLayout 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:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="false"
android:orientation="vertical"
tools:context=".order.Order">
<LinearLayout
android:id="@+id/headerbar"
style="@style/HeaderBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:orientation="vertical"
android:visibility="visible">
<include layout="@layout/toolbar_actionbar" />
<!-- placeholder, empty except on L -->
</LinearLayout>
<android.support.v4.widget.DrawerLayout
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="false">
<!-- Main layout -->
<FrameLayout
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipChildren="false"
app:shadowDrawable="@drawable/header_shadow">
<android.support.v4.widget.NestedScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:id="@+id/llMainContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="@dimen/padding_10">
<EditTextView
android:id="@+id/etEmail"
style="@style/Widget.xyz.EditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/order_mobile_number"
android:imeOptions="actionDone"
android:inputType="text"
app:fontTextStyle="3" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="2">
<EditTextView
android:id="@+id/txtDateFrom"
style="@style/Widget.xyz.EditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_normal"
android:layout_weight="1"
android:drawableLeft="@drawable/ic_calendar"
android:drawablePadding="@dimen/spacing_normal"
android:text="@string/date_from"
android:focusable="false"
android:editable="false"
app:fontTextStyle="3" />
<EditTextView
android:id="@+id/txtDateTo"
style="@style/Widget.xyz.EditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/margin_left_10"
android:layout_marginTop="@dimen/spacing_normal"
android:layout_weight="1"
android:drawableLeft="@drawable/ic_calendar"
android:drawablePadding="@dimen/spacing_normal"
android:focusable="false"
android:editable="false"
android:text="@string/date_to"
app:fontTextStyle="3" />
</LinearLayout>
<TextView
android:id="@+id/txtGenerate"
style="@style/Theme.xyz.Button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_normal"
android:text="@string/generate_report"
android:textAllCaps="false"
app:fontTextStyle="1" />
<android.support.v7.widget.RecyclerView
android:id="@+id/rvPendingOrders"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_micro" />
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
</FrameLayout>
<!-- Nav drawer -->
<include layout="@layout/navdrawer" />
</android.support.v4.widget.DrawerLayout>
</LinearLayout>
答案 1 :(得分:0)
使用EditText作为NestedScrollView中的第一个元素可能对您有帮助。
<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimary"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/blur"
android:orientation="vertical">
<EditText
android:layout_width="0px"
android:layout_height="0px"
android:focusable="true"
android:focusableInTouchMode="true" />
<android.support.v7.widget.RecyclerView
android:id="@+id/itemsHolder"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
注意:启动活动时必须隐藏键盘
答案 2 :(得分:0)
添加
android:descendantFocusability="blocksDescendants"
像这样在LinearLayout内
<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:descendantFocusability="blocksDescendants"
android:orientation="vertical">