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

Need help understanding a complex generic declaration in java
Clear a text file prior to Load in Java Servlet
Making a copy of an object Dynamically?
How can I Optimize Spring Framework usage for Google App Engine Applications
Xpath query to step backwards in a path
spring inject unmarshalled xml
Shifting integer using shiftopearator
How to manage EntityManager life-cycle in CDI environement (using Tomcat)
JavaFX should or must or an alternative for new coming developers? [closed]
How to Use Two Images in Java?
Android Fatality from Seemingly Sound Method
How to: JAR -> Web hosted application?
i cannot fix “Exception in thread ”main“ java.lang.ArithmeticException: / by zero” [duplicate]
How do i use 1 object from a while loop
How to run a jsp program?
CannotLoadBeanClassException: Cannot find class for bean with name 'encryptionKey' defined in ServletContext resource

Categories

HOME
pandas
ionic-framework
blogger
push-notification
getelementsbytagname
at-command
amortized-analysis
infragistics
django-imagekit
add
gorm
facebook-php-sdk
spring-kafka
imacros
vb.net-2010
moonmail
visual-studio-2005
flask-wtforms
circuit
dynamics-crm-online
tostring
flux
jqwidget
plunker
grails3
kudan
zurb-foundation-6
sqlcipher
buildbot
buck
newline
bpel
unboundid
directx-10
galsim
http-status-code-503
airconsole
titanium-mobile
hybridauth
geopositioning
ios5
lto
libraries
mixture-model
preconditions
jvm-languages
arena-simulation
parentheses
promela
pnotify
boost-multi-index
domain-model
worker-thread
windows-iot-core-10
account-kit
grails-tomcat-plugin
probability-density
slicknav
elements
mikroc
etsy
websitepanel
holder.js
flash-cs5
lua-5.1
pickadate
system.management
historian
jfugue
vhd
xna-4.0
ruby-2.2
splash
sortedlist
clipperlib
proj4js
skos
codeigniter-url
tablelayout
java-metro-framework
preferences
mesa
mysql-error-1062
java.nio.file
web2py-modules
sharp-repository
lcs
html-editor
gil
cisco-jtapi
parametric-equations
dotnethighcharts
netdna-api
krl
createwindow
revisions
ctp4
grid-system

Resources

Encrypt Message