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 I print the text I typed in my first class to my second class?
JDBC getDouble returns 0.0
How to call formdata parameters in Java POST
I can not run the Spring and MyBatis application
The import com.sun.net.httpserver.HttpServer conflicts with a type defined in the same file. Help :(
Producer Consumer Misunderstanding in Threading
Springfox Swagger adding response status 200 to POST and PUT
Getting InvocationTargetException error when using JavaFX DragDrop from JAR
Spring access control to page
java.lang.ClassCastException: android.widget.ScrollView cannot be cast to android.widget.TextView
Button is not displayed on JFrame after .setVisible(true) and ActionListener does sometimes not register clicks on buttons
java.awt.Graphics : abstract methods are called?
framework for handling exception in java
Android debug logging causes values to be stored in ArrayList to change
Java switch statements bypasses all cases and even default
Background color flickers using JCheckBox in JTable

Categories

HOME
gitlab
smarty
alfresco
framework7
spring-cloud-stream
graphql
jgroups
c#-2.0
webrequest
virtualization
basic
numeral.js
u-sql
n-gram
iron-router
django-admin
highlight.js
pc
karma-jasmine
alpine
xlsxwriter
tokenize
tibco-mdm
captiveportal
url-scheme
windows-server-2000
data-manipulation
noraui
protovis
asset-pipeline
devextreme
web-mining
streamsets
tasker
nomethoderror
vao
total-commander
convertapi
wso2carbon
react-scripts
jquery-nestable
hendrix
typescript1.8
rdfs
aurelia-validation
windows-mobile-6.5
r-forge
spring-cache
django-scheduler
vtigercrm
chord-diagram
angular-strap
multi-level
skype4py
bluemix-app-scan
nessus
wapiti
jfugue
intel-fortran
cannon.js
metaclass
purge
0xdbe
ideamart
streambase
csquery
jsonpickle
network-interface
cdt
rdtsc
dml
p4java
reactfx
doskey
marmalade
rtmfp
bundles
datagridviewcolumn
dbconnection
pushbackinputstream
jelly
android-hardware
wsdl-2.0
onsubmit
ohm
zpt
propagation
gdlib
radcombobox
revisions
mirah
fixed-width
javap
ctp4
noscript
text-coloring

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