Pregunta

Este es el trato.

que estaba buscando sobre el código de extender una ImageView:

http://marakana.com/forums/android/examples/98.html

y me preguntaba ¿Cómo puedo añadir la nueva vista en un archivo de diseño xml, junto con algunos otros puntos de vista.

Ya lo hice en mi diseño lineal principal:

<FrameLayout android:id="@+id/FrameLayout01" android:layout_width="300dp" android:layout_height="300dp">
        <com.marakana.Rose android:layout_height="wrap_content" android:layout_width="wrap_content"/>

pero el problema es que de esta manera el método onDraw no consigue llamado.

Puede alguien sugerir una solución para esto? tal vez algunos ejemplos donde combines CustomViews con diseño xml.

TNX.

¿Fue útil?

Solución 2

creo que lo resolví. Yo uso mi código en el archivo main.xml y funciona. lo que tenía que hacer era para anular un nuevo constructor de la clase de aceptar AttributesSet junto con el contexto como un parámetro y luego usar findViewById (CustomViewName) hacer referencia a ella en la actividad y el uso de las funciones definidas en el CustomView.

Otros consejos

¿Ha agregado a la definición res / valores / attrs.xml

<declare-styleable name="Rose">
</declare-styleable>

No estoy seguro de si es necesaria si no se agrega ningún atributo xml ...

Además, había ayuda si usted envió el código com.marakana.Rose. A modo de ejemplo, esta es la declaración de la clase de un componente de mi propia:

public class CalendarCell extends ImageButton implements OnTouchListener

la onDraw:

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

y esto es un fragmento de mi diseño xml:

<TableRow>
        <com.view.customcomponents.CalendarCell
            style="@style/NumericImageButton"
            android:id="@+id/calendar_row1_col1"

            android:background="@drawable/calendar_bg_selector" />

Lo hice hace algún tiempo siguiendo un tutorial, pero no recuerdo dónde. También, puede ser que falte algo. Google un poco y encontrará recursos útiles.

Edit: Creo que estos son los tutoriales que he seguido, si tuviera que poner en algún trabajo para finalmente hacer que funcione:

documentos oficiales

AndDev.org

Para permitir el Android Herramientas de Desarrollo para interactuar con su punto de vista, como mínimo debe proporcionar un constructor que toma una Contexto y un objeto AttributeSet como parámetros. Este constructor permite al layout editor to create and edit an instance of your view.

class PieChart extends View {
    public PieChart(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
}

Y el detalle respuesta aquí

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top