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

Panel.repaint() doesn't seem to be refreshing panel
Get all commits from today
Why functional programming language support automated memoization but not imperative languages?
Java regex matching with or clause [duplicate]
Post data AsyncTask Exception
Constructor with variable number of arguments in Java
Basic Program for encrypt/Decrypt : javax.crypto.BadPaddingException: Decryption error
Comparator based on different nullable fields of an object
Getting 'java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/location/LocationServices' error while running the code
Run unit test with robolectric get Resources$NotFoundException
NotesException:Older version on server does not support this method
Scalacheck new Buildable Instances
How to run test one by one rather than parallel using maven?
Permission Denied When Deleting Java Files Through Terminal
How can I call JFrame with another JFrame after 2 Seconds Delay?
Spring Data gemfire - More than one OnServer Function

Categories

HOME
client
netsuite
mediawiki
rsyslog
react-redux
maven-3
rubygems
survey
gps
fingerprint
mvvmcross
serverspec
webrequest
fancybox-3
imacros
quickbooks
alignment
task
clearcase-ucm
django-simple-history
windows-7-x64
jsdoc
reactive-cocoa
textfield
lldb
kryo
chromium-embedded
jndi
typo3-6.2.x
jaxb2
windows-server-2000
titanium-mobile
google-sites-2016
html5-fullscreen
dosbox
web-mining
x11-forwarding
occlusion
gulp-sourcemaps
jvm-languages
checkboxlist
gpx
acoustics
.net-4.6.2
sas-jmp
termination
pubmed
domain-model
slickedit
windows-mobile-6.5
django-scheduler
mediaelement
background-service
angular-strap
intrusion-detection
thrust
simplewebrtc
php-internals
jfugue
thredds
qdialog
atk4
wireshark-dissector
iis-arr
emailrelay
microbenchmark
truevault
npapi
kineticjs
website-monitoring
network-interface
googlemock
castle
jquery-layout
hippomocks
undefined-reference
multiprocessor
cdc
spring-io
ftps
file-locking
batterylevel
dataadapter
anonymous-methods
simba
quickdialog
cisco-jtapi
gcj
genshi
rfc1123
file-comparison
krl
propagation
exchange-server-2003
privilege
text-coloring
aquaticprime
rtml

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