Buttons With Background Color and Image - android

I have a button that changes the image when it clicked.
I've done that with this code.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="#drawable/ic_fullscreen_gmap" android:state_selected="false"/>
<item android:drawable="#drawable/ic_fullscreen_exit_gmap"/>
</selector>
Is it possible to change the color of the default button but Together with the Image?
I want to change it to something.
The default button color is something like gray and I want to change that.

To change both the image and the background color of your Button, you could use an ImageButton and define separate selectors for the android:src and android:background attributes.
For example:
button_src_selector.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="#drawable/ic_fullscreen_gmap"/>
<item android:state_pressed="true"
android:drawable="#drawable/ic_fullscreen_exit_gmap"/>
</selector>
button_bg_selector.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="#color/color1"/>
<item android:state_pressed="true"
android:drawable="#color/color2"/>
</selector>
And the ImageButton:
<ImageButton
android:id="#+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="#drawable/button_src_selector"
android:background="#drawable/button_bg_selector"/>

Following code will help you to change default button background:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="#drawable/button_bg_selected" android:state_selected="true"></item>
<item android:drawable="#drawable/button_bg_pressed" android:state_pressed="true"></item>
<item android:drawable="#drawable/button_bg_normal"></item>
</selector>

Related

How to change active Bottom bar tab background color

I am using roughike/BottomBar below link shown to a image so how am i make look like this.
https://i.stack.imgur.com/Wybr2.png please help
You can add in your styles.xml :
<item name="android:navigationBarColor">#color/theme_color</item>
or programmatically
window.setNavigationBarColor(#ColorInt int color)
Of course you should bear in mind that this will only work with API>21.
Also refer to this link.
Define a selector drawable and also make two drawable for selected and unselected tab
selector tab tab_background.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="#drawable/tab_background_selected" android:state_selected="true" />
<item android:drawable="#drawable/tab_background_unselected" android:state_selected="false" android:state_focused="false" android:state_pressed="false" />
</selector>
tab_background_selected.xml in drawable folder
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="#d13fdd1a" />
</shape>
tab_background_unselected.xml in drawable folder
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="#3F51B5" />
</shape>
And after all that in your style.xml mention your selector to use
<style name="Base.Widget.Design.TabLayout" parent="android:Widget">
<item name="tabBackground">#drawable/tab_background</item>
<item name="tabIndicatorColor">#ff00ff</item>
<item name="tabIndicatorHeight">2dp</item>
</style>

how to make background colored button touchable or appear to clickable in android

i'm using simple button with its background colored as like -
android:background="#FF58585A"
but now it'll not appear to touchable or clickable can anyone help me how i make this button touchable.
U need to add selector (in your drawable folder) as your background
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="#color/normal" android:state_enabled="false"/>
<item android:drawable="#color/pressed" android:state_pressed="true"/>
<item android:drawable="#color/pressed" android:state_focused="true"/>
<item android:drawable="#color/pressed" android:state_selected="true"/>
<item android:drawable="#color/normal"/>
</selector>
Your values/colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="normal">#FF58585A</color>
<color name="pressed">#ffffff</color> // what ever pressed value u want
</resources>
Then set this selector as your button background
android:background="#drawable/btn_selector"

<item> tag requires a 'drawable' attribute

I am trying to very simply style a Button. I just want it blue with with text when not pressed, and white with blue text when clicked.
I tried to do this with a style and a selector.
In my layout I have this Button:
<Button
android:id="#+id/button1"
style="#style/MyButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="#string/login" />
And in res/values/styles I have this styles.xml:
<style name="MyButton">
<item name="android:background">#drawable/btn_background</item>
<item name="android:textColor">#drawable/btn_textcolor</item>
</style>
And of course, the two selectors, in res/drawable, btn_background.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true" android:color="#color/white" />
<item android:color="#color/SapphireBlue" />
</selector>
and btn_textcolor.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true" android:color="#color/SapphireBlue" />
<item android:color="#color/white" />
</selector>
The error I get now when I either run the app, or open the layout editor is:
<item> tag requires a 'drawable' attribute
I understand the message, but I don't have a drawable, is it is a simple, flat button.
How can I create such a simple button?
Update according to this post, it should work.
Try this way,hope this will help you to solve your problem.
btn_background.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="#color/white" android:state_pressed="true"></item>
<item android:drawable="#drawable/white" android:state_focused="true"></item>
<item android:drawable="#drawable/SapphireBlue" android:state_enabled="true" android:state_focused="false" android:state_pressed="false"></item>
<item android:drawable="#drawable/white" android:state_enabled="false"></item>
</selector>
btn_textcolor.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="#color/SapphireBlue" android:state_pressed="true"></item>
<item android:color="#drawable/SapphireBlue" android:state_focused="true"></item>
<item android:color="#drawable/white" android:state_enabled="true" android:state_focused="false" android:state_pressed="false"></item>
<item android:color="#drawable/SapphireBlue" android:state_enabled="false"></item>
</selector>
Background attribute expects a drawable and the drawable selector must be in one of the /drawable folders.
TextColor attribute expects a color and the color selector must be in one of the /color folders.
/res/color/my_textcolor_selctor.xml
/res/drawable/my_background_selector.xml
Also, the drawable selector must use 'android:drawable' for selector items (a color resource maybe used for the attribute value since a color is a drawable),
whereas the color selector must use 'android:color' for the selector items.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false"
android:drawable="#color/disabledbackgroundColor" />
<!-- default -->
<item android:drawable="#color/myBackgroundColor" />
</selector>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false"
android:color="#color/disabledColor" />
<!-- default -->
<item android:color="#color/defaultColor" />
</selector>
android:background seems to accept drawable selectors but not color selectors... so just leave a color as your android:background, and use a normal color selector with android:backgroundTint, which expects colors anyway:
at styles.xml:
<style name="MyButton">
<item name="android:background">#color/some_fixed_color</item>
<item name="android:backgroundTint">#color/background_color_selector</item>
<item name="android:textColor">#drawable/btn_textcolor</item>
</style>
(res/color/background_color_selector.xml is a normal color selector.)

Statelist drawable android:state_enabled not working in xml

I'm trying to add to my existing statelist drawable, a disabled state and it just doesn't work.
originally, I had this code:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="#drawable/store_item_background_selected" android:state_selected="true"/>
<item android:drawable="#drawable/store_item_background"/>
</selector>
and it worked perfectly for selected and not selected.
now I wanted to add the android:state_enabled="false" like this:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="#drawable/store_item_background_selected" android:state_selected="true"/>
<item android:drawable="#drawable/store_item_background" android:state_enabled="true"/>
<item android:drawable="#drawable/store_item_background_disabled"/>
</selector>
and it never switches to the disabled image.
any ideas?
EDIT
I added setEnabled(false) to the constructor of the view I'm setting this statelist drwable and now I see the disabled image, but once I set the view to enabled, it won't switch to disabled again.
Although this is a really old question, one should write a selector in this order:
disabled state first
pressed state second
normal state last
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" android:exitFadeDuration="#android:integer/config_shortAnimTime">
<item android:drawable="#color/due_gray" android:state_enabled="false" />
<item android:drawable="#color/whizdm_primary_dark_color" android:state_pressed="true" />
<item android:drawable="#color/whizdm_primary_color" />
</selector>
Try this
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="#drawable/store_item_background_selected" android:state_enabled="true" android:state_selected="true"/>
<item android:drawable="#drawable/store_item_background" android:state_enabled="true"/>
<item android:drawable="#drawable/store_item_background_disabled" android:state_enabled="false"/>
</selector>

Background color from XML

I have a layout and i want to set your background color with this xml:
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_selected="true" android:color="#000000"></item>
<item android:color="#ffffff" ></item>
</selector>
this layout to be in a tabhost and where is selected it change your olor, how I do?
There's three "main" states you need to take into account: selected, pressed and the rest. Here's an example:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:drawable="#color/tab_background_active" />
<item android:state_pressed="true" android:drawable="#color/tab_background_pressed"/>
<item android:drawable="#color/tab_background_inactive" />
</selector>
You should also use "focused" if you care about supporting users with trackballs.

Categories

Resources