Я пытаюсь создать собственный макет «SquareBox» на основе относительной компоновки для размещения ImageView в центре. И этот пользовательский макет всегда будет в квадратном размере (зависит от высоты и ширины ImageView).Центр в родительском не работает для настраиваемого относительного макета
protected void onMeasure(int width, int height) {
super.onMeasure(width, height);
int measuredWidth = getMeasuredWidth();
int measuredHeight = getMeasuredHeight();
int size;
if (measuredWidth > measuredHeight) {
size = measuredWidth;
} else {
size = measuredHeight;
}
setMeasuredDimension(size, size);
}
Вот мой код макета:
<com.example.tools.SquareBox
android:id="@+id/square_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:background="@android:color/darker_gray">
<ImageView
android:id="@+id/canvas_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="0dp"
android:layout_centerInParent="true"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
tools:src="@drawable/demo_image" />
</com.example.tools.SquareBox>
Он работает нормально, но изображение вида не в центре этого пользовательского вида. Я пробовал следующие: -> android: layout_centerInParent = "true" для ImageView.
-> андроид: gravity = "center" для "SquareBox".
-> Добавить CENTER_IN_PARENT программно в ImageView в методе onMeasure SquareBox.
Но ничего не работает. Что мне здесь не хватает?
Я пытался это тоже. Но не работает. –