
DieGoldeneMitte
Dauer-User
- 262
Hallo Forum,
ich bastel gerade an meinem ersten Android Programm, dabei habe ich festgestellt, dass ich mit den vorhandenen Layouts nicht zufrieden bin.
Ich will deshalb einen eigenen View schreiben. Mein erster Versuch soll ein LinearView sein, der alle Kinder gleich breit rendert (ich weiß, dass es layout_weight gibt, aber ich will ja was lernen
).
Im Gegensatz zum java.awt (da war das in 5min geschrieben) habe ich massive Schwierigkeiten. Mein View nimmt nur den Platz ein, malt aber nichts. Kann mir jemand sagen, wo bei mir der Denkfehler ist?
Der Code sieht im Wesentlichen so aus, die Views sind aller per xml definiert:
ich bastel gerade an meinem ersten Android Programm, dabei habe ich festgestellt, dass ich mit den vorhandenen Layouts nicht zufrieden bin.
Ich will deshalb einen eigenen View schreiben. Mein erster Versuch soll ein LinearView sein, der alle Kinder gleich breit rendert (ich weiß, dass es layout_weight gibt, aber ich will ja was lernen
Im Gegensatz zum java.awt (da war das in 5min geschrieben) habe ich massive Schwierigkeiten. Mein View nimmt nur den Platz ein, malt aber nichts. Kann mir jemand sagen, wo bei mir der Denkfehler ist?
Der Code sieht im Wesentlichen so aus, die Views sind aller per xml definiert:
Code:
@Override
protected void onLayout( boolean changed, int l, int t, int r, int b ) {
int len = getChildCount();
int w = ((r-l)-(len-1)*PADDING)/len;
int pos = l;
for( int i=0; i<len; i++ ) {
View c = getChildAt(i);
c.layout( pos, t, pos+w, b );
pos += w + PADDING;
}
}
@Override
protected void onMeasure( int wSpec, int hSpec ) {
int w = MeasureSpec.getSize(wSpec);
int len = getChildCount();
int w1 = (w-(len-1)*PADDING)/len;
for( int i=0; i<len; i++ ) {
View c = getChildAt(i);
measureChild(c, resolveSize(w1,wSpec), hSpec);
}
setMeasuredDimension(resolveSize(w, wSpec),hSpec);
}