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

start multiple threads at the same time
Java in Eclipse: Library was not loaded successfully from file
How to send object from c# client to java sever?
Spring thymeleaf pass object attribute to href button submit
Apple APNs - Get ExpiredTokens over Http2
How to change button text based on colour Android studio [closed]
Gradle: definitive solution for duplicate files copied in APK CE
savedInstanceState it's null after pass for onSaveInstanceState
IntelliJ Smart Line Join works with Java but not with Scala
HtmlUnit: how to search for text
Is it possible to setText of TextView in MainActivity.java using string.xml?
Why is my Java applet just displaying my fallback message?
Spring Boot Liquibase not picking up all application.yml files
Using BufferedReader.lines() breaks in parallel
log4j - Console log all modules in project
Android JSON Parsing - End of input at character 0 of error

Categories

HOME
netsuite
keras
mfc
session
cplex
tizen-web-app
frameworks
jpeg
ckeditor
mvvmcross
convolution
vifm
resize
apache-cayenne
windows-azure-storage
openrefine
finite-automata
propel
http-status-code-504
undefined
grails3
immutable.js
accessor
wkwebview
claims-based-identity
status
selectedindexchanged
internet-explorer-9
info.plist
atlassian-crucible
newline
lightswitch-2013
fabric8
catch-all
protovis
windows-dev-center
uiswipegesturerecognizer
hexo
simplexml
disassembling
dynamics-crm-2013
android-browser
sql-server-agent
gulp-sourcemaps
janrain
estimote
s
segment
strptime
prolog-setof
jquery-nestable
tizen-native-app
tropo
slickedit
lift-json
cudafy.net
spring-cache
word-vba-mac
visual-c++-2008
file-writing
lttng
flash-cs5
whois
apachebench
jqgrid-formatter
wyam
splash
myo
composite
dereference
rake-task
jscript.net
android-nested-fragment
issuu
internet-connection
mcts
prettify
ivyde
file-locking
eventual-consistency
enterprisedb
ocunit
referrer
jspinclude
ocx
removeclass
doh
gcj
horizontal-accordion
jmock
cxxtest
dentrix
ncqrs
user-friendly
data-driven
procedural-music
private-members
genealogy
grid-system
windows-live-messenger

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