usar una texto que propiedad poner para incluir img imagen función funciona explique emplea ejemplo con como atributos atributo alternativo agregar android checkbox

android - una - propiedad alt imagen



Imagen de casilla de verificación personalizada Android (6)

¿Hay alguna manera fácil de usar una imagen personalizada para una casilla de verificación? Estoy buscando duplicar el comportamiento "destacado" de gmail. Así que quiero tener una casilla de verificación que, cuando esté marcada, sea una estrella rellena. Y cuando no está marcada es una estrella vacía. ¿Tengo que usar una vista de imagen y hacer mi propia lógica?


Copie el btn_check.xml de android-sdk / platforms / android - # / data / res / drawable en la carpeta dibujable de su proyecto y cambie los estados de imagen "on" y "off" a sus imágenes personalizadas.

Entonces tu xml solo necesitará android:button="@drawable/btn_check"

<CheckBox android:button="@drawable/btn_check" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" />

Si desea utilizar diferentes iconos predeterminados de Android, puede usar android:button="@android:drawable/..."


Crear un selector de casilla de verificación dibujable:

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/checkbox" android:state_checked="false"/> <item android:drawable="@drawable/checkboxselected" android:state_checked="true"/> <item android:drawable="@drawable/checkbox"/> </selector>

Asegúrate de que tu casilla de verificación sea como esta android:button="@drawable/checkbox_selector"

<CheckBox android:layout_width="match_parent" android:layout_height="wrap_content" android:button="@drawable/checkbox_selector" android:text="CheckBox" android:textAppearance="?android:attr/textAppearanceLarge" android:textColor="@color/Black" />


Intentalo -

package com; import android.content.Context; import android.content.res.TypedArray; import android.util.AttributeSet; import android.view.View; import android.widget.ImageView; public class CheckBoxImageView extends ImageView implements View.OnClickListener { boolean checked; int defImageRes; int checkedImageRes; OnCheckedChangeListener onCheckedChangeListener; public CheckBoxImageView(Context context, AttributeSet attr, int defStyle) { super(context, attr, defStyle); init(attr, defStyle); } public CheckBoxImageView(Context context, AttributeSet attr) { super(context, attr); init(attr, -1); } public CheckBoxImageView(Context context) { super(context); } public boolean isChecked() { return checked; } public void setChecked(boolean checked) { this.checked = checked; setImageResource(checked ? checkedImageRes : defImageRes); } private void init(AttributeSet attributeSet, int defStyle) { TypedArray a = null; if (defStyle != -1) a = getContext().obtainStyledAttributes(attributeSet, R.styleable.CheckBoxImageView, defStyle, 0); else a = getContext().obtainStyledAttributes(attributeSet, R.styleable.CheckBoxImageView); defImageRes = a.getResourceId(0, 0); checkedImageRes = a.getResourceId(1, 0); checked = a.getBoolean(2, false); a.recycle(); setImageResource(checked ? checkedImageRes : defImageRes); setOnClickListener(this); } @Override public void onClick(View v) { checked = !checked; setImageResource(checked ? checkedImageRes : defImageRes); onCheckedChangeListener.onCheckedChanged(this, checked); } public void setOnCheckedChangeListener(OnCheckedChangeListener onCheckedChangeListener) { this.onCheckedChangeListener = onCheckedChangeListener; } public static interface OnCheckedChangeListener { void onCheckedChanged(View buttonView, boolean isChecked); } }

Añadir este attrib -

<declare-styleable name="CheckBoxImageView"> <attr name="default_img" format="integer"/> <attr name="checked_img" format="integer"/> <attr name="checked" format="boolean"/> </declare-styleable>

Use como -

<com.adonta.ziva.consumer.wrapper.CheckBoxImageView xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/checkBox" android:layout_width="40dp" android:layout_height="40dp" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:clickable="true" android:padding="5dp" app:checked_img="@drawable/check_box_checked" app:default_img="@drawable/check_box" />

Arreglará todos tus problemas.


Las casillas de verificación que son elementos secundarios de Button pueden darle a su casillero una imagen de fondo con varios estados como se describe here , en "Estilo de botón":

... y ejemplificado here :


Otra opción es usar un ToggleButton con fondo nulo y un botón personalizado.

A continuación, un ejemplo que incluye un selector para el color del texto.

<ToggleButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:button="@drawable/toggle_selector" android:background="@null" android:paddingLeft="10dp" android:layout_centerHorizontal="true" android:gravity="center" android:textColor="@drawable/toggle_text" android:textOn="My on state" android:textOff="My off state" />

toggle_selector.xml

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true" android:drawable="@drawable/state_on" /> <item android:drawable="@drawable/state_off" /> </selector>

toggle_text.xml

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true" android:color="@color/app_color" /> <item android:color="@android:color/darker_gray" /> </selector>


Si tiene un código fuente abierto de Android, puede encontrar la definición de estilos en:
src / frameworks / base / core / res / res / values

<style name="Widget.CompoundButton.CheckBox"> <item name="android:background"> @android:drawable/btn_check_label_background </item> <item name="android:button"> ?android:attr/listChoiceIndicatorMultiple </item> </style>