Ich machte eine benutzerdefinierte Ansicht, die die PercentRelativeLayout
erweitert und zwingt die Ansicht, quadratisch zu sein. Die untergeordneten Elemente dieser Ansicht sollten der Größe ihrer übergeordneten Elemente (Höhe und Breite) entsprechen. Wenn ich die layout_width
oder layout_height
der Kinder zu oder fill_parent
setze, erstrecken sie sich über die Elternansicht (wie man in der rechten Hälfte des Bildes sehen kann). Die untergeordneten Elemente sind außerhalb des benutzerdefinierten Layouts nicht sichtbar, aber ich kann die untergeordneten Elemente nicht über relative Größen ordnungsgemäß ausrichten.Untergeordnete Elemente Überlauf benutzerdefinierte RelativeLayout
Die benutzerdefinierte Ansicht:
public class QuadraticPercentRelativeLayout extends PercentRelativeLayout {
public QuadraticPercentRelativeLayout(Context context) {
super(context);
}
public QuadraticPercentRelativeLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
public QuadraticPercentRelativeLayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int width = getMeasuredWidth();
int height = getMeasuredHeight();
int size = width < height ? width : height;
setMeasuredDimension(size, size);
}
}
Hier ist mein Layout (vereinfacht):
<RelativeLayout 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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<QuadraticPercentRelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/progress_bar">
<ImageView
android:id="@+id/page_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:scaleType="fitCenter"
app:srcCompat="@drawable/package_stock"/>
<ImageView
android:id="@+id/next_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/page_view"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
app:layout_widthPercent="35%"
app:srcCompat="@color/ColorPrimaryDark"/>
<ImageView
android:id="@+id/previous_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/page_view"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
app:layout_widthPercent="35%"
app:srcCompat="@color/ColorPrimaryDark"/>
</QuadraticPercentRelativeLayout>
</RelativeLayout>
Ist dies das Standardverhalten für Kinder Views? Wie kann ich es ändern, damit die Kinder der Elterngröße entsprechen?