Domanda

qui è l'affare.

ero alla ricerca su questo codice di estendere un ImageView:

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

e mi chiedevo come posso aggiungere la nuova vista in un file di layout XML esistente, insieme ad alcuni altri punti di vista.

già ho fatto questo dentro il mio layout lineare principale:

<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"/>

, ma il problema è che in questo modo il metodo OnDraw non viene chiamato.

Qualcuno può suggerire una soluzione per questo? forse alcuni esempi in cui si combini con il layout CustomViews XML.

tnx.

È stato utile?

Soluzione 2

Credo ho risolto. Ho usato il mio codice nel file main.xml e funziona. la cosa che ho dovuto fare è stato quello di ignorare un nuovo costruttore della classe accettare AttributesSet a fianco con il contesto come parametro e quindi usare findViewById (CustomViewName) per farvi riferimento nelle attività e utilizzare le funzioni definite nel CustomView.

Altri suggerimenti

Hai aggiunge la definizione a res / valori / attrs.xml

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

Non sono sicuro se è necessario se non si aggiunge qualsiasi attributo xml ...

Inoltre, sarebbe aiuto se hai postato il codice com.marakana.Rose. A titolo di esempio, questa è la dichiarazione della classe di un componente della mia:

public class CalendarCell extends ImageButton implements OnTouchListener

l'OnDraw:

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

e questo è un frammento di mio layout xml:

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

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

L'ho fatto qualche tempo fa, seguendo un tutorial, ma non ricordo dove. Inoltre, potrei mancare qualcosa. A Google un po 'e troverete risorse utili.

modifica: Penso che questi siano i tutorial che ho seguito, anche se ho dovuto mettere in alcuni lavori finalmente farlo funzionare:

documentazione ufficiale

AndDev.org

  

Per consentire i Developer Tools Android per interagire con la vostra vista, come minimo è necessario fornire un costruttore che prende un Contesto e un AttributeSet oggetti come parametri. Questo costruttore consente alla layout editor to create and edit an instance of your view.

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

E dettaglio risposta qui

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top