I use ConstraintLayout in my project. While I find a problem when I try to call getWidth in onCreate. The result is 0.
The code is here.
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_paint);
    iv = (ImageView) findViewById(R.id.iv);
    iv.setOnTouchListener(new ImageViewTouchListener());
    System.out.println("imageview width:" + iv.getWidth() + " height:" + iv.getHeight());
}
The layout design view
The xml content.
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btn_red"
        android:background="#ff0000"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btn_green"
        android:background="#00ff00"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintLeft_toRightOf="@+id/btn_red" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btn_blue"
        app:layout_constraintLeft_toRightOf="@+id/btn_green"
        android:background="#0000ff"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintTop_toTopOf="parent" />
    <android.support.constraint.Guideline
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:id="@+id/guideline"
        android:orientation="horizontal"
        tools:layout_editor_absoluteY="55dp"
        tools:layout_editor_absoluteX="0dp"
        app:layout_constraintGuide_percent="0.09784412" />
    <SeekBar
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:id="@+id/sb_stroke"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintHorizontal_bias="1.0"
        android:layout_marginTop="16dp"
        app:layout_constraintTop_toBottomOf="@+id/btn_green" />
    <android.support.constraint.Guideline
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/guideline4"
        android:orientation="horizontal"
        tools:layout_editor_absoluteY="103dp"
        tools:layout_editor_absoluteX="0dp"
        app:layout_constraintGuide_percent="0.1840796" />
    <ImageView
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:id="@+id/iv"
        app:layout_constraintTop_toTopOf="@+id/guideline4"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        tools:ignore="ContentDescription"
        android:background="#22000000"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintVertical_bias="0.0" />
</android.support.constraint.ConstraintLayout>
I want to know how to get the right width and height of ImageView.
I try to get width and height in onStart and onResume but get the same result 0.
In OnCreate() your view has not yet been created as per your xml parameters. So you have to add addOnGlobalLayoutListener() on your view and you will get your dimensions in that listener once view has been created.
iv.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
    iv.getViewTreeObserver().removeGlobalOnLayoutListener(this);
    System.out.println("imageview width:" + iv.getWidth() + " height:" + iv.getHeight());
   }
});
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With