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

Why is overriding in JAVA working somewhat differently that from C++?
how to improve performance in analysing log file using mapreduce
How to call Java concurrent threads in web application
how to compare 2 set in java containing characters in it?
Fibonacci Sum in (Java)
Convert List<Date> to Map<Month, List<Date>>
Using multiple logger in single appender in log4j.xml [duplicate]
Is it okay to use strings.xml Resource file for storing large text in Android?
HttpURLConnection: Difference between getResponseMessage(), getInputStream() and getContent()
Create editable JList which contains JTextFields
Printing entire Excel Workbook in java without opening the excel document
Approach for web application to act as Restfull application
How to get gradle and cucumber working together?
ccrypt will not decrypt ccrypt-j encrypted files
JavaEE JPA returning versions of old data
NoClassDefFoundError when using the StandOut Library

Categories

HOME
compiler-construction
bluetooth
server
mediawiki
mockito
google-play
xmpp
getelementsbytagname
rsync
jira
blueprintjs
numeral.js
usergrid
windows-phone-7
seaborn
after-effects
pc
google-static-maps
kudan
zurb-foundation-6
tdd
react-css-modules
internet-explorer-9
log4js-node
jaxb2
gitignore
flink-streaming
airconsole
kendo-ui-grid
usbserial
hybridauth
accelerate-framework
http-digest
sharefile
azure-ml
nomethoderror
arena-simulation
vao
heightmap
sas-jmp
cubic-spline
filepicker
komodoedit
forever
knockout-components
pintos
yt-project
nxt
httplistener
skobbler-maps
transmitfile
rvest
tform
tableau-online
apache-commons-fileupload
vstest.console.exe
pretty-print
clipperlib
truevault
apache-commons-net
directoryservices
offloading
codeigniter-url
fpml
uitouch
valueconverter
cdc
google-cloud-save
ril
back-stack
chronoforms
ember-app-kit
cisco-jtapi
funscript
gdata-api
wse3.0
transactionscope
xdomainrequest
servicehost
appender
table-footer
pyinotify
telerik-scheduler
radcombobox
site.master
web-application-design
bespin
exchange-server-2003
sustainable-pace
gacutil
w3wp
msdev
django-notification
ajax-forms
document-conversion

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