java


Java android change color in xml file


I have this xml where I already set stroke color but I sometimes I want to change stoke color programmatically. The file name is dummy.xml
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#ffffffff" />
<stroke
android:width="1dp"
android:color="#ff000000" />
<padding
android:bottom="1dp"
android:left="1dp"
android:right="1dp"
android:top="1dp" />
<corners
android:bottomLeftRadius="7dp"
android:bottomRightRadius="7dp"
android:topLeftRadius="7dp"
android:topRightRadius="7dp" />
</shape>
I want to change color (stroke color) programmatically, how I can do this?
I use this xml here :
<LinearLayout
android:layout_marginTop="2dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="#+id/a"
android:layout_gravity="center"
android:background="#drawable/dummy"
android:layout_marginBottom="2sp"
android:orientation="horizontal"
android:padding="5dp">
<RelativeLayout
android:id="#+id/serverStatusWrapper"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="2dp"
android:background="#drawable/shadow_green"
android:padding="2dp">
<ImageView
android:id="#+id/serverStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:antialias="true"
android:src="#drawable/ic_settings_input_antenna_white_24dp" />
</RelativeLayout>
<RelativeLayout
android:id="#+id/locationStatusWrapper"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#drawable/shadow_red"
android:padding="2dp">
<ImageView
android:id="#+id/locationStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:antialias="true"
android:src="#drawable/ic_warning_white_24dp" />
</RelativeLayout>
</LinearLayout>
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.a);
You can change the stroke as
GradientDrawable drawable = (GradientDrawable)linearLayout.getBackground();
drawable.setStroke(3, Color.RED);
And can change solid color as
GradientDrawable drawable = (GradientDrawable)linearLayout.getBackground();
drawable.setColor(Color.RED);
Hope this helps
If you have drawable file for a "view" like this
Then you can change
a. Stroke color :
GradientDrawable drawable = (GradientDrawable)view.getBackground();
drawable.setStroke(3, Color.RED); // set stroke width and stroke color
b. Solid color :
GradientDrawable drawable = (GradientDrawable)view.getBackground();
drawable.setColor(Color.RED); // set solid color
If you have drawable file for a "view" like this
Then you can change the individual item attributes by taking separate drawable objects by there positions.
StateListDrawable drawable = (StateListDrawable)view.getBackground();
DrawableContainerState dcs = (DrawableContainerState)drawable.getConstantState();
Drawable[] drawableItems = dcs.getChildren();
GradientDrawable gradientDrawableChecked = (GradientDrawable)drawableItems[0]; // item 1
GradientDrawable gradientDrawableUnChecked = (GradientDrawable)drawableItems[1]; // item 2
now to change stroke or solid color :
//solid color
gradientDrawableChecked.setColor(Color.BLUE);
gradientDrawableUnChecked.setColor(Color.RED);
//stroke
gradientDrawableChecked.setStroke(1, Color.RED);
gradientDrawableUnChecked.setStroke(1, Color.BLUE);

Related Links

JavaFX: Missing return statement
Different adresses when Serializing in Java
Hibernate #Validator with Spring Boot
Persistence.xml in the right folder, but I still get an error
log4j2 filter for Marker and Loglevel
Retrieve list of children just at the first level
return json array from spring controller
JPA / Hibernate Out of Memory Exception
Access static files from src/main/resources in Java
Strange exception java.lang.IllegalArgumentException: location must not be null or empty
Create an empty constructor when wrong parameters
Storing the return value of a random number as a local variable?
YouTubePlayerSupportFragment not playing Video
How to format BigDecimal to those requirements?
Date formatter produces inconsistent results
JavaFX tableview clears collection

Categories

HOME
sendgrid
client
bluetooth
openstack
kde
relay
rdf
dxl
gps
blueprintjs
onelogin
upload
gorm
adobe-analytics
handsontable
jplayer
openrefine
google-static-maps
accessor
devops
wijmo
dxf
rundeck
numerical-methods
fifo
replaceall
webkitspeechrecognition
uisplitview
karaf
fog
column-family
bytecode-manipulation
http-digest
io-redirection
multilingual
espeak
starteam
awt
jvm-languages
ibpy
angular-resource
dandelion
pebble-watch
carrot
spring-cache
word-vba-mac
ableton-live
instant
skobbler-maps
transmitfile
python-stackless
design-by-contract
photobucket
pervasive-sql
mutation-observers
angular-local-storage
dereference
umbraco6
facebook-graph-api-v2.4
website-monitoring
nstableviewcell
relocation
onactivityresult
bundles
opcache
file-locking
buster.js
sqlperformance
limejs
sublist
trusted
mt
venn-diagram
datawindow
labwindows
tridion-worldserver
enter
eclipse-templates
yui-datatable
disclosure
inotifycollectionchanged
celltable
actionview
mongomapper
jmock
lpeg
html-input
meego
xetex
thread-local-storage

Resources

Mobile Apps Dev
Database Users
javascript
java
csharp
php
android
MS Developer
developer works
python
ios
c
html
jquery
RDBMS discuss
Cloud Virtualization
Database Dev&Adm
javascript
java
csharp
php
python
android
jquery
ruby
ios
html
Mobile App
Mobile App
Mobile App