Custom view causing black background behind textview - android

I have a custom listview whose row contains 2 textviews. Everything is fine but the textviews are having black backgrounds. Here is the image:
Here is the code:
row.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#drawable/list_selector"
android:orientation="horizontal"
android:padding="5dip" >
<LinearLayout
android:id="#+id/list_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_marginRight="5dip"
android:background="#drawable/image_bg"
android:padding="3dip" >
<ImageView
android:id="#+id/listimage"
android:layout_width="50dip"
android:layout_height="50dip"
android:src="#drawable/ic_launcher" />
</LinearLayout>
<TextView
android:id="#+id/listtitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="#+id/list_image"
android:layout_alignParentTop="true"
android:layout_toRightOf="#+id/list_image"
android:text=""
android:textColor="#ffffff"
android:textSize="15sp"
android:textStyle="bold"
android:typeface="sans" />
<!-- Artist Name -->
<TextView
android:id="#+id/listpubdate"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginTop="1dip"
android:layout_toRightOf="#+id/list_image"
android:text=""
android:textColor="#ffffff"
android:textSize="10sp" />
<ImageView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="#drawable/arrow"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"/>
</RelativeLayout>
gradient_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#f1f1f2"
android:centerColor="#e7e7e8"
android:endColor="#cfcfcf"
android:angle="270" />
</shape>
gradient_bg_hover.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#18d7e5"
android:centerColor="#16cedb"
android:endColor="#09adb9"
android:angle="270" />
</shape>
list_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_selected="false"
android:state_pressed="false"
android:drawable="#drawable/gradient_bg" />
<item android:state_pressed="true"
android:drawable="#drawable/gradient_bg_hover" />
<item android:state_selected="true"
android:state_pressed="false"
android:drawable="#drawable/gradient_bg_hover" />
</selector>
image_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape
android:shape="rectangle">
<stroke android:width="1dp" android:color="#dbdbdc" />
<solid android:color="#FFFFFF" />
</shape>
</item>
</layer-list>

On your ListView, set the attribute android:cacheColorHint to #00000000

Related

Customize the GridView like in the image below

Please help me in customizing like in the image
Below is my grid_mainborders.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_focused="true"
android:drawable="#drawable/grid_two_borderselected"
/> <!-- focused -->
<item android:state_focused="false"
android:drawable="#drawable/grid_two_bordernormal"/>
</selector>
Below is my grid_two_borderselected.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke
android:width="2dp"
android:color="#android:color/holo_blue_light" />
<padding android:left="7dp" android:top="7dp"
android:right="7dp" android:bottom="7dp" />
<corners android:radius="3dp" />
</shape>
Below is my grid_two_bordernormal.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke
android:width="2dp"
android:color="#android:color/white" />
<padding android:left="7dp" android:top="7dp"
android:right="7dp" android:bottom="7dp" />
<corners android:radius="3dp" />
</shape>
Below is my GridView Item file
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="5dp"
android:layout_marginTop="2dp"
android:layout_marginRight="5dp"
android:layout_marginBottom="2dp"
android:background="#drawable/grid_mainborders">
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="#+id/cardViewGridLangsItem"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#drawable/grid_mainborders">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_margin="10dp">
<TextView
android:id="#+id/tvMaintext"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="English"
android:textSize="26sp"
android:padding="5dp"
android:textStyle="bold"/>
<TextView
android:id="#+id/tvSubText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="English"
android:textSize="20sp"
android:padding="5dp"/>
<TextView
android:id="#+id/tvAlphabet"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="E"
android:textSize="38sp"
android:padding="5dp"/>
</LinearLayout>
</android.support.v7.widget.CardView>
</FrameLayout>
I am using gridview with base adapter,
I have tried with few links but background is changing not with the corners of selected item.
Please help me on this Thanks in advance

Inside the spinner how to set imageview at the right corner

<LinearLayout
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<Spinner
android:id="#+id/spinner1_day"
android:layout_width="70dp"
android:layout_height="40dp"
android:src="#drawable/edit_text_style"
android:text="Day"
android:textStyle="normal"
android:textSize="15dp"
android:fontFamily="sans-serif-light"
android:drawSelectorOnTop="true"
android:entries="#array/Day"
android:dropDownWidth="fill_parent"
android:background="#drawable/downimage"/>
<Spinner
android:id="#+id/spinner2_month"
android:layout_width="70dp"
android:layout_height="40dp"
android:background="#drawable/edit_text_style"
android:text="Day"
android:textStyle="normal"
android:textSize="15dp"
android:fontFamily="sans-serif-light"
android:drawSelectorOnTop="true"
android:entries="#array/Day"
android:layout_gravity="center_horizontal"
android:layout_weight="0.81"
android:layout_marginLeft="10dp"
/>
</LinearLayout>
i used android:dropDownWidth="fill_parent" and android:background="#drawable/downimage" but the image will be set as background.how can is set imageview inside the spinner at the right corner?
<LinearLayout
android:id="#+id/layoutSpinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#drawable/input_field"
android:orientation="horizontal"
android:padding="5sp">
<Spinner
android:id="#+id/spinner_area"
android:layout_width="0sp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="9"
android:background="#null"
android:entries="#array/state"
android:gravity="center"
android:prompt="#string/area_prompt"
android:spinnerMode="dropdown" />
<ImageView
android:id="#+id/errow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:padding="5sp"
android:src="#drawable/arrow1" />
</LinearLayout>
Use this
Create an XML in drawable folder with any name for example spinner_bg.xml and add the following lines
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item><layer-list>
<item><shape>
<gradient android:angle="90" android:endColor="#ffffff" android:startColor="#ffffff" android:type="linear" />
<stroke android:width="1dp" android:color="#504a4b" />
<corners android:radius="5dp" />
<padding android:bottom="3dp" android:left="3dp" android:right="3dp" android:top="3dp" />
</shape></item>
<item ><bitmap android:gravity="bottom|right" android:src="#drawable/spinner_ab_default_holo_dark_am" /> // you can use any other image here, instead of default_holo_dark_am
</item>
</layer-list></item>
</selector>
Add the following lines to your styles.xml which is inside values folder
<style name="spinner_style" >
<item name="android:background">#drawable/spinner_bg</item>
<item name="android:layout_marginLeft">10dp</item>
<item name="android:layout_marginRight">10dp</item>
<item name="android:layout_marginBottom">10dp</item>
<item name="android:paddingLeft">8dp</item>
<item name="android:paddingTop">5dp</item>
<item name="android:paddingBottom">5dp</item>
Now add this style to your spinner as
<Spinner
android:id="#+id/spinner1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="#style/spinner_style"
android:popupBackground="#cccccc" />
For more detail visit here. Android add arrow image to spinner
Try drawableRight property in XML to set it on right side on spinner:
android:drawableRight="#drawable/downimage"
I have solved this problem on my side by using following simple code
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<Spinner
android:id="#+id/spinner"
android:layout_width="match_parent"
android:gravity="center"
android:layout_height="wrap_content"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_centerVertical="true"
android:layout_marginRight="10dp"
android:layout_alignParentRight="true"
android:src="#drawable/ambilwarna_arrow_down" />
</RelativeLayout>
Hope this will work for you .Keep coding
try to create a custom spinner using FrameLayout, I using this, and works well
<FrameLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#drawable/border_spinner_select_location"
>
<Spinner
android:spinnerMode="dialog"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="#+id/spinner_provinsi"
android:prompt="#string/promp"
android:background="#drawable/spinner_pressed"
></Spinner>
<ImageView
android:layout_width="23dp"
android:layout_height="30dp"
android:src="#drawable/ico_arrow_select_white_xxhdpi"
android:layout_gravity="right|center_vertical"
android:layout_marginRight="25dp"
/>
</FrameLayout>
for border line :
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:thickness="0dp"
android:shape="rectangle">
<solid android:color="#android:color/transparent" />
<stroke android:width="2dp"
android:color="#android:color/white" />
</shape>
for effect when your press the spinner
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false"
android:drawable="#android:color/white" />
<item android:state_pressed="true"
android:drawable="#color/deep_white_pressed_spinner" />
<item android:state_pressed="false" android:state_focused="true"
android:drawable="#android:color/holo_blue_bright" />
<item android:drawable="#color/semi_white_transparant" />
</selector>
dummy.xml (drawable should be of very less size-24dp)
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<layer-list android:opacity="transparent">
<item android:width="100dp" android:gravity="right">
<bitmap android:src="#drawable/down_button_dummy_dummy" android:gravity="center"/>
</item>
</layer-list>
</item>
</selector>
layout snippet be like...
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardUseCompatPadding="true"
app:cardElevation="5dp"
>
<Spinner
android:layout_width="match_parent"
android:layout_height="100dp"
android:background="#drawable/dummy">
</Spinner>
</android.support.v7.widget.CardView>

Spacing between image and text in the button

I want to create a button as it is in the first picture. But my output is like in the second picture. How can i achieve the correct spacing between image and text in the button and also the shadow as it is in the first picture. How can i achieve this.
My code is as follows
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<layer-list>
<item android:left="2dp" android:top="4dp">
<shape>
<solid android:color="#1E90FF" />
</shape>
</item>
</layer-list>
</item>
<item>
<layer-list>
<!-- SHADOW LAYER -->
<item android:left="4dp" android:top="4dp">
<shape>
<solid android:color="#C0C0C0" />
</shape>
</item>
<!-- CONTENT LAYER -->
<item android:bottom="5dp" android:right="4dp">
<shape>
<solid android:color="#DADADA" />
</shape>
</item>
</layer-list>
</item>
try with this code this is running code you can use this code ..
<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:orientation="vertical">
<LinearLayout
android:id="#+id/lla"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="#CCCCCC"
>
<ImageView
android:layout_width="wrap_content"
android:layout_height="60dp"
android:src="#drawable/ic_launcher" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="FIND PRODUCTS"
android:layout_marginLeft="5dp"
android:layout_gravity="center"
/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="60dp"
android:src="#drawable/ic_launcher"
/>
</LinearLayout>
Try this:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"><layer-list>
<item android:left="2dp" android:top="4dp"><shape>
<solid android:color="#1E90FF" />
</shape></item>
</layer-list></item>
<item><layer-list>
<!-- SHADOW LAYER -->
<item android:left="3dp" android:top="3dp"><shape>
<solid android:color="#C0C0C0" />
</shape></item>
<!-- CONTENT LAYER -->
<item android:bottom="3dp" android:right="3dp"><shape>
<solid android:color="#DADADA" />
</shape></item>
</layer-list></item>
</selector>
xml
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#drawable/back"
android:paddingLeft="10dp"
android:paddingRight="10dp" >
<ImageView
android:id="#+id/iconLeft"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginTop="10dp"
android:src="#drawable/ic_photos" />
<TextView
android:id="#+id/txtLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:layout_toRightOf="#+id/iconLeft"
android:text="Find Product"
android:textSize="16sp" />
<ImageView
android:id="#+id/iconRight"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginTop="10dp"
android:src="#drawable/ic_photos" />
</RelativeLayout>

How to configure a selector on a relativelayout in a listview

In an android listview each rowitem that has a relativelayout as its top level view. I want to have a selector on this relativelayout to indicate focused and pressed states. All answers that I have tried still do not work. Is this possible? Here is the code I am using:
##my_list_selector
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="#drawable/my_color_list_selected" />
<item android:state_activated="true" android:drawable="#drawable/my_color_list_selected" />
<item android:state_focused="true" android:drawable="#drawable/my_color_list_focused" />
<item android:state_selected="true" android:drawable="#drawable/my_color_list_focused" />
<item android:drawable="#drawable/my_color_list_default" />
</selector>
##my_color_list_selected
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<gradient android:endColor="#21d70076"
android:startColor="#21d70076"
android:angle="90"></gradient>
</shape>
##my_color_list_focused
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<gradient android:endColor="#ffffff"
android:startColor="#ffffff"
android:angle="90"></gradient>
<stroke android:width="2dp" android:color="#21d70076"/>
</shape>
##my_color_list_default
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<solid android:color="#ffffff"></solid>
</shape>
## List View
<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:orientation="vertical"
android:gravity="center"
android:layout_gravity="top">
<com.mydemo.app.util.ListView
android:id="#android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:listSelector="#android:color/transparent"
/>
<ProgressBar
android:id="#+id/progress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:indeterminateDrawable="#drawable/progress_rotate"
android:visibility="gone" />
<TextView
android:id="#android:id/empty"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:text="#string/no_content"
android:layout_gravity="center"
android:visibility="gone"/>
</LinearLayout>
##ROW VIEW
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="#+id/main"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="top"
android:background="#drawable/my_list_selector">
<TextView
android:id="#+id/episode_number"
android:layout_toRightOf="#+id/image_frame"
android:layout_alignParentTop="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="#dimen/gridview_row_margins"
android:layout_marginRight="#dimen/gridview_row_margins"
android:layout_marginTop="#dimen/gridview_row_margins"
/>
<TextView
android:id="#+id/description"
android:layout_toRightOf="#+id/image_frame"
android:layout_below="#+id/episode_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="#dimen/gridview_row_margins"
android:layout_marginRight="#dimen/gridview_row_margins"
android:lines="1"
android:ellipsize="end"/>
</RelativeLayout>
UPDATE:
* The issue was resolved unrelated to this code. There was a hard coded background inadvertently being set in the adapater. This code actually does work.

Android Relative Layout Selector

How do I change the color of a Relative Layout Shape ? To work it like a button.
I tried to do it using a selector.
This is the code i used.
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="#+id/rlGPS"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:background="#drawable/relative_selector"
>
<ImageView
android:id="#+id/iv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:src="#drawable/ic_launcher" />
<TextView
android:id="#+id/tvs1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_marginLeft="5dp"
android:layout_below="#+id/tvl1"
android:layout_toLeftOf="#+id/iv1"
android:text="you can here protect ... "
android:textColor="#color/gray" />
<TextView
android:id="#+id/tvl1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_toLeftOf="#id/iv1"
android:text="GPS"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#color/white" />
</RelativeLayout>
relative_selector.xml In here I'm doing the changes using selector.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:drawable="#drawable/relative_focus"/>
<item android:state_pressed="true" android:state_enabled="false"
android:drawable="#drawable/relative_clicked" />
<item android:drawable="#drawable/relative_background"/>
</selector>
relative_background.xml This is the shape.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:padding="10dp"
android:shape="rectangle">
<stroke android:width="1dp" android:color="#636161" />
<padding android:left="5dp"
android:top="2dp"
android:right="2dp"
android:bottom="5dp" />
<corners android:radius="6dp" />
<solid android:color="#88ffffff"
/>
</shape>
In "relative_clicked.xml" and "relative_focus.xml" I only changed the colors.
relative_focus.xml
<stroke android:width="1dp" android:color="#ffff00" />
relative_clicked.xml
<solid android:color="#88ffff00"/>
All .xml files are in drawable folder.
I want to work this like a button.Is someone having any idea?
From your selector xml:
<item android:state_pressed="true"
android:state_enabled="false"
android:drawable="#drawable/relative_clicked" />
Will it work if you remove state_enabled?
<item android:state_pressed="true"
android:drawable="#drawable/relative_clicked" />

Categories

Resources