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

How to add text to a single text field from many buttons ?? — Java
Android ( Java ): Enable GPS or WiFi with Intent
How to load data these variable in loop [closed]
Is this a static method? “static {…}” [duplicate]
Add object to arrayList without overwritting it
Copy RichText (Formatted) To clipboard Java
Casting Bigdecimal to Integer
Reduce does not start, After map completes
Infinite loop using a iterator over a treeset and I'm invoking the next() method
SHA 256 for android app [duplicate]
connect endpoints-backend and android client with oauth2
Could not find or load main class com.google.zxing.client.j2se.CommandLineRunner
How to get 2 fields concatenated in hibernate?
Read large file data using buffered reader in android
What is the way to feed multidimensional input data to encog ANN in java?
Finding the largest number in an array of integers

Categories

HOME
yii2
openlayers
wso2-am
image
netsuite
dictionary
tinymce
lodash
vmware
blueprintjs
ravendb
wamp
indesign
amazon-cloudformation
dacpac
etl
saxon
apache-metamodel
excel-vba-mac
alpine
telerik-reporting
blazemeter
smb
centos6.5
wpfdatagrid
internet-explorer-9
maquette
assistant
phonegap
http-status-code-503
airconsole
fog
catch-all
caret
lxd
asset-pipeline
subset-sum
openoffice.org
rotational-matrices
environment-modules
file-format
x11-forwarding
code-search-engine
az-application-insights
angularjs-factory
azure-ml
texmaker
netcdf4
google-datalayer
scrollable
network-flow
blogengine.net
sage-one
powercli
idisposable
setter
carrot
crypt
pdfclown
zendesk-app
crosswalk-runtime
gnome-shell-extensions
topbeat
messenger
word-vba-mac
skobbler-maps
transmitfile
holder.js
markojs
flash-cs5
associative-array
freelancer.com-api
ford-fulkerson
srand
teamcity-8.0
sdhc
graph-drawing
pretty-print
apache-commons-net
facebook-graph-api-v2.4
website-monitoring
modalpopup
gwidgets
xc16
file-copying
qcodo
asp.net-web-api-odata
xcode-6.2
flask-cors
sgen
jquery-layout
datagridviewcolumn
cloud-connect
srs
flexmojos
pyhdf
tidy
easy-install
dataadapter
pushbackinputstream
delphi-6
google-email-migration
multipage
chrono
mercurial-server
netbeans-7.1
google-friend-connect
zend-translate
gin
ext3
geneva-server
lzh

Resources

Encrypt Message



code
soft
python
ios
c
html
jquery
cloud
mobile