2016-06-29 22 views
2

Ich erstelle eine benutzerdefinierte Ansicht und in der Layout-Datei, legte ich seine Breite auf 200dp und seine Höhe auf 200dp.Messungen der benutzerdefinierten Ansicht

<com.example.baoshuai.mydefineview.MyTextView 
    android:layout_width="300dp" 
    android:layout_height="300dp" 
    android:layout_margin="30dp" 
    android:text="Hello,Sunshine" 
    android:textAllCaps="false" 
    android:paddingTop="40dp" 
    android:textAlignment="center"/> 

I getWidth() oder getMeasuredWidth() bin mit meiner Ansicht der Breite zu bekommen, ist der Wert nicht 200dp, aber 700dp. Hier ist, wo ich die Messungen erhalten:

@Override 
protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 
    canvas.drawColor(Color.BLUE); 
    int width = getWidth(); 
    int height = getHeight(); 
    Log.d("get","Width:"+width+" Height:"+height); 
    int measuredWidth = getMeasuredWidth(); 
    int measuredHeight = getMeasuredHeight(); 
    Log.d("getMeasured","measuredWidth:"+measuredWidth+" measuredHeight:"+measuredHeight); 
} 

Hier ist ein Screenshot:

enter image description here

Antwort

0
android:layout_width="300dp" 
    android:layout_height="300dp" 

Wert, den Sie definieren, ist in dp. Wenn Sie die Breite und Höhe programmatisch erhalten, wird der Wert int width = getWidth(); in Pixel angegeben.

So scheint es verschiedene Werte, aber sind gleich.

Sie können dies überprüfen, indem Sie Werte im Layout px eingeben und diese programmatisch anzeigen.

Refere https://stackoverflow.com/a/2025541/3817374, um weitere Informationen zu verschiedenen Einheiten in Android zu erhalten.

+0

Vielen Dank, ich habe den Fehler gefunden. – lbs0912

Verwandte Themen