Ich versuche, benutzerdefinierte Layout "SquareBox" basierend auf relativen Layout zu erstellen, um ein ImageView in der Mitte zu halten. Und dieses benutzerdefinierte Layout wird immer in quadratischer Größe sein (abhängig von ImageViews Höhe und Breite).Center in Parent funktioniert nicht für benutzerdefinierte relative Layout
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);
}
Hier ist mein Layout-Code:
<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>
Es funktioniert gut, aber die Bildansicht ist nicht in der Mitte dieser benutzerdefinierten Ansicht. Ich habe Folgendes versucht: -> Android: layout_centerInParent = "True" für ImageView.
-> Android: Schwerkraft = "Mitte" für "SquareBox".
-> Hinzufügen von CENTER_IN_PARENT programmgesteuert zu ImageView in SquareBox onMeasure-Methode.
Aber nichts funktioniert. Was fehlt mir hier?
ich dies auch versucht haben. Aber nicht funktioniert. –