Aufgeblasene Kinder mit benutzerdefiniertem LinearLayout werden beim Überschreiben von onMeasure nicht angezeigt
Ich versuche, eine zu zeigenMyCustomLinearLayout
was sich erstrecktLinearLayout
. Ich blase das aufMyCustomLinearLayout
mit demandroid:layout_height="match_parent"
Attribut. Was ich möchte, ist eineImageView
in diesemMyCustomLinearLayout
. Die Höhe davonImageView
sollte seinmatch_parent
und die Breite sollte gleich der Höhe sein. Ich versuche dies zu erreichen, indem ich die überschreibeonMeasure()
Methode. Was passiert, ist dasMyCustomLinearLayout
wird quadratisch wie es sollte, aber dieImageView
wird nicht angezeigt.
Unterhalb meines verwendeten Codes.Bitte beachten Sie, dass dies eine extrem vereinfachte Version meines Problems ist. DasImageView
wird durch eine komplexere Komponente ersetzt.
public MyCustomLinearLayout(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
private void init(Context context) {
final LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.view_myimageview, this);
setBackgroundColor(getResources().getColor(R.color.blue));
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int height = getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec);
setMeasuredDimension(height, height);
}
Dasview_myimageview.xml
Datei:
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android" >
<ImageView
android:id="@+id/view_myimageview_imageview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher" />
</merge>
Also, wenn ich die überschreibeonMeasure()
Methode, dieImageView
wird nicht angezeigt, wenn ich das nicht überschreibeonMeasure()
Methode, dieImageView
zeigt, aber viel zu klein, weil dieMyCustomLinearLayout
Die Breite ist zu klein.