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?