una ropa relleno rellenar programa para online modificar imagen fotos cs6 como colores color cambiar cabello app aplicaciones android shape stroke

android - ropa - Necesito cambiar el color de trazo a un color definido por el usuario. Nada que ver con el estado



relleno de color en el cabello (5)

Necesito cambiar el color de trazo de la aplicación. El usuario puede cambiar el color de fondo, así que también debo permitirle cambiar el trazo (contorno) del botón. Como ya está establecido en el dibujable (muestra a continuación) no he encontrado una manera de cambiar esto. Parece que todas las otras preguntas como esta solo dicen que use el archivo XML ... pero eso no me permite hacerlo dinámico. ¡Gracias por cualquier ayuda!

Necesito cambiar el color de trazo a un color definido por el usuario. Nada que ver con el estado.

<?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#ffffffff"/> <stroke android:width="3dp" android:color="@color/Dim_Gray" /> <<<<--- This is what I need to change <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> <corners android:bottomRightRadius="12dp" android:bottomLeftRadius="12dp" android:topLeftRadius="12dp" android:topRightRadius="12dp"/> </shape>



Mire el LayerDrawable porque se creó a partir de su XML y se usó en tiempo de ejecución.

Aquí hay un ejemplo de demostración:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle" > <solid android:color="@android:color/transparent" /> </shape> </item> <item android:id="@+id/itemId" android:top="-4dp" android:right="-4dp" android:left="-4dp"> <shape> <solid android:color="@android:color/transparent"/> <stroke android:width="1.5dp" android:color="#06C1D7" > </stroke> <padding android:bottom="-2dp"/> </shape> </item> </layer-list>

Puedes modificarlo en tiempo de ejecución como:

LayerDrawable layerDrawable = (LayerDrawable) getResources() .getDrawable(R.drawable.only_one_bottom_line); GradientDrawable gradientDrawable = (GradientDrawable) layerDrawable.findDrawableByLayerId(R.id.itemId); int px = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1.5f, getResources().getDisplayMetrics()); gradientDrawable.setStroke(px, getResources().getColor(R.color.theme_color)); tv_select_city_name.setBackground(layerDrawable);


Quizás se estén refiriendo a las listas de estado de color, que le permiten cambiar el color en función de si el botón fue presionado / enfocado / habilitado / etc.



1. Si tiene un archivo dibujable para una "vista" como esta

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <corners android:radius="5dp" /> <solid android:color="@android:color/white" /> <stroke android:width="3px" android:color="@color/blue" /> </shape>

Entonces puedes cambiar
a. Color del trazo :

GradientDrawable drawable = (GradientDrawable)view.getBackground(); drawable.setStroke(3, Color.RED); // set stroke width and stroke color


segundo. Color sólido :

GradientDrawable drawable = (GradientDrawable)view.getBackground(); drawable.setColor(Color.RED); // set solid color

2. Si tiene un archivo dibujable para una "vista" como esta

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true" android:id="@+id/buttonSelected"> <shape> <solid android:color="@color/blue" /> <stroke android:width="1px" android:color="@color/blue" /> </shape> </item> <item android:state_checked="false" android:id="@+id/buttonNotSelected"> <shape android:shape="rectangle"> <solid android:color="@color/white" /> <stroke android:width="1px" android:color="@color/blue" /> </shape> </item> </selector>

Luego puede cambiar los atributos individuales del elemento tomando diferentes objetos dibujables por sus posiciones.

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

ahora para cambiar el trazo o el color sólido:

//solid color gradientDrawableChecked.setColor(Color.BLUE); gradientDrawableUnChecked.setColor(Color.RED); //stroke gradientDrawableChecked.setStroke(1, Color.RED); gradientDrawableUnChecked.setStroke(1, Color.BLUE);