Benutzerdefinierte onDraw () -Methode nicht aufgerufen
<LinearLayout android:id="@+id/svLL" android:orientation="horizontal"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<ScrollView android:id="@+id/sv"
android:layout_width="wrap_content" android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android">
<!--
<TextView android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/scrollbar_2_text" />
-->
<com.mypackage.MyDrawableView
android:layout_width="fill_parent" android:layout_height="wrap_content" />
</ScrollView>
</LinearLayout>
public class MyDrawableView extends View {
Context thisContext;
public MyDrawableView(Context context, AttributeSet attr) {
super(context);
thisContext = context;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
final Paint paint = new Paint();
paint.setColor(Color.BLUE);
paint.setTextSize(12);
canvas.drawText("Blah blah", 0, 100, paint);
}
}
public class MyActivity extends Activity {
//Your member variable declaration here
//Called when the activity is first created.
@Override
public void onCreate(Bundle savedInstanceState) {
//Your code here super.onCreate(savedInstanceState);
setContentView(R.layout.xmllayout);
LinearLayout svll = (LinearLayout) findViewById(R.id.svLL);
svll.setLayoutParams(new LinearLayout.LayoutParams(300, 300));
}
}
Ich bin setzen Sie einen Haltepunkt, Haltepunkt aber ist nie Treffer innerhalb onDraw()
Methode, was ist falsch ?
InformationsquelleAutor der Frage mynameisanthpny | 2010-07-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinzufügen
setWillNotDraw(false)
im MyDrawableView Konstruktor. Original Antwort ist hier.InformationsquelleAutor der Antwort Dragan Marjanović
Ihrer Ansicht hat eine Höhe von 0. Sie legen Ihre Sicht zu haben
height=wrap_content
aber nicht überschreibenonMeasure()
zu sagen, das UI-toolkit, wie groß Ihre Anzeige ist.InformationsquelleAutor der Antwort Romain Guy
Müssen Sie
@Override
dieOnMeasure(int, int)
Methode angeben, um die Größe der Ansicht durch AufrufsetMeasuredDimension(int,int)
.Wenn Sie nicht die Standard-Methode wird Ihre Ansicht zu haben, die Größe
width=0 height=0
. Und deshalb versucht erst gar nicht zu nennenonDraw
überhaupt.Den
OnMeasure
MethodenaufrufesetMeasuredDimension(int,int)
sagt, wie groß ist deine Ansicht.(So dass Sie brauchen, um die Größe des android-Bildschirms auf den
OnMeasure
Methode, und rufensetMeasuredDimension
entsprechend).InformationsquelleAutor der Antwort Gust Jc
Nur machen
layout_width
undlayout_height
von der benutzerdefinierten Ansicht werden einige fix in der ersten Zeit stattwrap_content
oderfill_parent
.Das funktionierte für mich.
InformationsquelleAutor der Antwort virajdasondi
Obwohl ich bin neu in android, aber ich glaube das problem ist, weil der
Statt
"R.layout.xmllayout"
passMyDrawableView
- Objekt (mitfindViewById
) und überprüfen.Habe ich nicht ausprobiert, hoffe aber, es wird funktionieren.
InformationsquelleAutor der Antwort Biplab Kundu
Müssen Sie mit invalidate() in Konstruktor-Methode erhalten Sie die onDraw Aufgerufen.
InformationsquelleAutor der Antwort Muhammad Aamir Ali
Nachdem Sie die benutzerdefinierte Ansicht Breite, Sie sollten in der Breite scrollen.
InformationsquelleAutor der Antwort John Great
Wahrscheinlich
im Konstruktor nicht festgelegt wurde oder
onMeasure()
wird nicht überschrieben.InformationsquelleAutor der Antwort CoolMind