Reputation:
Hi I am facing one issue in designing and its xml is as follow. Issue is that I am using two textview, button and recyclerview inside nested scrollview. When I am running this code view is started from recyclerview but when I am scrolling down then those textview,button are visible. Please help me how to start view from first view and avoid direct focus on recyclerview while displaying view inside mobile. How can I solve this problem? Help me. Sorry for my poor english.
<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>
Upvotes: 4
Views: 3788
Reputation: 549
Add
android:descendantFocusability="blocksDescendants"
inside the LinearLayout like This
<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">
Upvotes: 0
Reputation: 91
Using EditText as first element inside NestedScrollView may help you.
<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>
Note: You have to hide key board when launching activity
Upvotes: 0
Reputation:
I managed my code as following way and it's working fine for me. Take a look at full layout code:
<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>
Upvotes: 1