How can I get the width of an ImageButton that is set in XML to 0 and has size from the weight?
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginRight="10dp"
android:layout_marginLeft="10dp"
android:orientation="horizontal">
<ImageButton
android:id="@+id/fluido"
android:layout_width="0dp"
android:layout_height="70dp"
android:layout_marginEnd="10dp"
android:layout_marginRight="10dp"
android:tint="@color/icon"
android:layout_weight="0.33"
app:srcCompat="@drawable/fluido" />
<......../>
</LinearLayout>
How do I get this value that was automatically set by the weight?
As set in XML as 0, if I do: imageButton.getWidth();
or imageButton.getLayoutParams().width();
both return 0 as in XML.
It is possible using below snippet:
yourView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
yourView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
} else {
yourView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
// Correct view dimensions are here:
int width = yourView.getMeasuredWidth();
int height = yourView.getMeasuredHeight();
}
});