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