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

multi threaded task scheduler in java
How do i convert my x, y, z rotations into axis-angle to calculate a quaternion
use of '+' - addition or concatenation
Convert List to a HasMap of String & ArrayList [closed]
gcc compilation: size_t not found (installing JLirc on 64 bit system)
Access Personal Certificate from windows using java [closed]
MemorySection.get error trying to load item from custom YAMLConfiguration
AES-RSA-Hybrid - AES BadPaddingException when using on different computers
Diferences in this two approaches to sleep the excecution in java
web.xml properties in WebApplicationInitializer
Factorial logic not giving answer
How to handle null values when doing Collections.sort() with nested objects?
Download in java a webpage which makes AJAX call to load
twitter4j result.nextquery() is giving results from the first page again
How to implement Google Play Game Services, Intellij, libgdx
Accessing Files From Java Applet [duplicate]

Categories

HOME
osgi
c#-4.0
relayjs
octobercms
q
gis
elm
cakephp-2.5
ezpublish
echarts
flyway4
django-imagekit
amazon-cloudformation
fancybox-3
floating-action-button
correlation
collectd
alignment
n-gram
gz
hex-editors
apache-metamodel
database-replication
interop
introduction
emulator
format-specifiers
php-openssl
blazemeter
crystal-reports-2010
fifo
wtx
compatibility
atlassian-crucible
newline
catel
kendo-ui-grid
gammu
wallpaper
environment-modules
gesture
occlusion
sas-visual-analytics
ws-security
sql-server-agent
jvm-languages
botbuilder
checkboxlist
cubic-spline
flickr-api
alphabet
return-value
dotnetzip
brightcove
static-ip-address
login-control
plottable.js
storekit
actionbardrawertoggle
master-slave
fadeout
nessus
php-internals
ptrace
natvis
execute
simple-framework
angular-local-storage
java-metro-framework
elliptic-curve
wp-query
picturefill
app42
page-layout
odata4j
eclipse-memory-analyzer
back-stack
xamlparseexception
plasma
e4x
automount
labwindows
onsubmit
transactionscope
deobfuscation
recent-documents
asp.net-mvc-areas
xsdobjectgen
web-architecture
memory-size
kdbg
ti-dsp
adrotator
privilege
noscript
nerddinner
sector
defensive-programming

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