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

JTable with data from array
Java 8: store and retrieve data in form of a data table [duplicate]
Android - Exceptions while sending post request to the server
Email inline image in email not working on MacOS email
Duplicate item from linked list in new list
convert check mark “02713” UNIcode sign to String
Can I put different parts of a Javalite project in separate Maven repos?
Alarm keeps playing after onPause called
What protection does casting do?
Java - Is there any disadvantage to using the Object array in lieu of a different data structure?
Java Swing - How to position cursor inside JTextField from PlainDocument
process builder doesn't print the console output using wmic
Maven wrapper : FileNotFoundException for apache-maven-3.2.5-bin.zip
what's really the point of 'new' operator in Java? [duplicate]
how to support UTF-8-BOM files using a csv file reader (Scala)
How do you save user input inside an array?

Categories

HOME
winforms
bluetooth
plone
angular-material
onedrive
blueprintjs
serverspec
directx
timeout
size
ibm-odm
circuit
jtextfield
zapier
csrf-protection
accessor
zurb-foundation-6
tibco-mdm
restful-authentication
uninstall
fopen
delicious-api
galsim
contact-form
catel
gtrendsr
usbserial
caret
avcapturesession
mapbox-gl
normal-distribution
mmenu
sequential
android-ble
plsql-psp
multilingual
twitch
g-code
apple-news
outlook-2013
promela
django-scheduler
redundancy
removechild
android-textview
probability-density
sts-springsourcetoolsuite
url-masking
dstu2-fhir
connect-by
livequery
wapiti
javax.sound.midi
wordml
libressl
iis-arr
dundas
npapi
qpainter
tt-news
eol
article
valuechangelistener
gridfs
runtime.exec
html4
ember-app-kit
http-unit
mhtml
hamiltonian-cycle
pysimplesoap
spring-portlet-mvc
punbb
hamachi
netbeans-7.1
calling-convention
locate
xfbml
sudzc
subviews
gamequery
sproutcore-2
gamma
brewmp
adrotator
boost-smart-ptr
temporal-database
premature-optimization
data-acquisition
rtml
lzh
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