从嵌套Scrollview中的recyclerview中删除焦点

时间:2016-02-14 17:15:02

标签: android android-layout android-recyclerview androiddesignsupport android-nestedscrollview

您好我在设计中面临一个问题,其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>

3 个答案:

答案 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">