自定义视图的测量

时间:2016-06-29 09:15:10

标签: android

我正在创建一个自定义视图,在布局文件中,我将其宽度设置为200dp,高度设置为200dp。

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

我使用getWidth()getMeasuredWidth()来获取我的视图宽度,值不是200dp,而是700dp。这是我得到测量结果的地方:

@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);
}

以下是截图:

enter image description here

1 个答案:

答案 0 :(得分:0)

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

您定义的值位于dp。以编程方式获取宽度和高度int width = getWidth();值以像素为单位。

所以它看起来不同,但是相同。

您可以通过在布局中应用px中的值并以编程方式显示它来检查相同内容。

  

引用https://stackoverflow.com/a/2025541/3817374以获取有关Android中不同单元的更多信息。