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 can we implement Observable.flatMapCompletable?
nested for loop java poker game arraylist constructor
RestTemplate mapping to object
Spring injection error no bean is defined [duplicate]
User Input incorporating Arrays and While Loops
How to provide parameters to a class with static methods without changing the static qualifier on them?
How to call webservice in servlet. Getting inaccessible Exception while calling webservice
How to add a panel class to my frame in main class
Use release or snapshot repository for manual deployment depending on the project version
How do you test multiple REST Requests?
Summing the digits of a string using charAt
Dynamic menu Thymeleaf
Java - XmlBeans - how to read and process mixed elements?
How to set different scene size in javafx of two linked fxml file?
Java MultiThreading skips loop and gives wrong result [duplicate]
Substituting fixed values with dynamic values in Java with JAXB and XML?

Categories

HOME
jdo
zeromq
c#-4.0
iot
sd-card
youtube-dl
leon
malloc
rubygems
jxls
umd
django-imagekit
paradox
windows-10-universal
vault
node-pdfkit
modelica
designer
django-simple-history
uitypeeditor
libtiff
telephony
sms-gateway
shared-hosting
java-3d
csrf-protection
pass-by-reference
blazemeter
java-7
facebook-apps
nat
exuberant-ctags
google-sites-2016
scorm2004
catch-all
atl
bytecode-manipulation
scaffold
hockeyapp
streamsets
code-search-engine
unspecified
ssjs
sql-server-agent
glew
no-www
vao
sencha-touch-2.3
btrace
long-polling
xml-documentation
jquery-validate
veracode
git-diff
font-size
np-complete
messenger
xcb
wdf
angular-cache
vmware-tools
trash
player
nessus
php-internals
independentsoft
unity-networking
kendonumerictextbox
tcpserver
xna-4.0
lib.web.mvc
thredds
wordml
pundit
generic-programming
composite
lustre
nsmutabledictionary
mdt
javafx-webengine
qcodo
titanium-modules
php-5.4
hippomocks
comexception
resty-gwt
apc
ruby-datamapper
file-locking
padarn
http-unit
robotics-studio
tinn-r
mt
manchester-syntax
newtonscript
osql
reddot
punbb
custom-backend
joyent
hamachi
javax.script
w3wp.exe
paster
revisions
phonon
anti-piracy
scripting-languages

Resources

Encrypt Message



code
soft
python
ios
c
html
jquery
cloud
mobile