java - Navigation drawer onClick in items ripple effect lost -
using new appcompat-v21 seek build navigation drawer.. first time didn't write background color or drawable , navigation drawer started transparent background!! strange! but, when clicked in items of see ripple effect of android lollipop. (amazing). tried set white background this:
<android.support.v4.widget.drawerlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" tools:context=".homeactivity" android:id="@+id/drawer" android:layout_width="match_parent" android:layout_height="match_parent"> <relativelayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent"> <include android:id="@+id/toolbar" layout="@layout/toolbar"/> </relativelayout> <listview android:id="@+id/navdrawer" android:layout_width="315dp" android:layout_height="match_parent" android:layout_gravity="start" android:choicemode="singlechoice" android:fitssystemwindows="true" android:cliptopadding="false" android:divider="@android:color/transparent" android:dividerheight="0dp" android:background="#ffff"/> </android.support.v4.widget.drawerlayout> the navigation drawer white , it's correct. background lost ripple effect in item click. item xml one:
<?xml version="1.0" encoding="utf-8"?> <relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:background="?android:selectableitembackground" android:layout_height="fill_parent" > <linearlayout android:id="@+id/spinnerlayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginbottom="13dp" android:orientation="vertical" > <relativelayout android:layout_width="fill_parent" android:layout_height="fill_parent" > <imageview android:id="@+id/sfondomappa" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerhorizontal="true" android:layout_weight="0" android:adjustviewbounds="true" android:scaletype="center" android:src="@drawable/banner_nav" /> <textview android:id="@+id/drawerwelcome" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignbottom="@+id/sfondomappa" android:layout_centerhorizontal="true" android:background="#40000000" android:fontfamily="sans-serif-medium" android:gravity="center_horizontal" android:padding="10dp" android:text="hola" android:textcolor="@color/ldrawer_color" android:textsize="14sp" /> </relativelayout> </linearlayout> <linearlayout android:id="@+id/headerlayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignparentbottom="true" android:orientation="vertical" > <textview android:id="@+id/drawertitle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentbottom="true" android:layout_gravity="center_horizontal" android:layout_margin="12dp" android:fontfamily="sans-serif-regular" android:gravity="center_horizontal" android:textcolor="@color/main_orange" android:textsize="15sp" /> </linearlayout> <linearlayout android:id="@+id/itemlayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignparentleft="true" android:layout_centervertical="true" android:layout_marginleft="16dp" android:layout_marginright="16dp" android:background="?android:attr/activatedbackgroundindicator" android:orientation="vertical" > <linearlayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_centervertical="true" > <imageview android:id="@+id/drawer_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:gravity="center_vertical" android:padding="3dp" /> <textview android:id="@+id/drawer_itemname" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginleft="32dp" android:fontfamily="sans-serif-medium" android:gravity="center_vertical" android:textcolor="#e4000000" android:textsize="14sp" /> </linearlayout> </linearlayout> </relativelayout> i wrote android:background="?android:selectableitembackground" in root layout nil change.. how can solve?
edit: wrote 1 time again listview of drawer in way
<listview android:id="@+id/navdrawer" android:layout_width="315dp" android:layout_height="match_parent" android:layout_gravity="start" android:layout_marginright="72dp" android:background="@android:color/white" android:choicemode="singlechoice" android:divider="#00000000" android:dividerheight="1.00dp" android:elevation="2dp" android:longclickable="false" android:orientation="vertical" android:overscrollmode="never" android:scrollbars="none" /> and ripple works. lost current position clicked.
i've faced same problem ... solution not documented enough, here is.
create selector drawable in drawable-v21 folder:
v21/activated_background.xml <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@color/primary_dark" android:state_activated="true" /> <item android:drawable="@color/primary" android:state_checked="true" /> <item android:state_pressed="true"> <ripple android:color="@color/primary" /> </item> <item android:drawable="@color/background_light" /> </selector> as can see in code above, magic done adding <ripple ... /> element above. it's available in v21+ only, that's why have declare separate selectors -v21 , normal.
lastly, set selector drawable background of desired element, in case listview item.
java android navigation-drawer onitemclicklistener
No comments:
Post a Comment