如何在更改父级高度后将自定义视图保留在底部

时间:2017-09-13 14:56:22

标签: android android-layout android-custom-view ondraw

我将自定义视图设置为底部,其父级高度最初为200dp。当我点击自定义视图时,我必须将父级设置为匹配父级。以便稍后我将在全屏幕上设置自定义视图的动画。

正在发生的事情是,当我设置相对布局(父视图)的大小以编程方式匹配父级时,它的子级自定义视图也将向上移动。我怎么能来这个?

以下是布局定义:

<RelativeLayout
    android:id="@+id/rlTreatmentDone"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:layout_alignParentBottom="true"
    android:clickable="false"
    android:gravity="bottom">


    <com.firsttreatmentflow.doneTreatment.DoneControllerView
        android:id="@+id/doneViewController"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:minHeight="200dp"></com.firsttreatmentflow.doneTreatment.DoneControllerView>


    <LinearLayout
        android:id="@+id/llArrowText"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:gravity="center"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/ivUpArrow"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@+id/tvDone"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="10dp"
            android:clickable="true"
            android:src="@drawable/arrow_up"
            android:visibility="gone" />

        <TextView

            android:id="@+id/tvDone"
            style="@style/BodyBoldTextStyle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@+id/bottomReferenceView"
            android:layout_centerHorizontal="true"
            android:clickable="true"
            android:text="Done"
            android:textColor="@color/uikit_white"
            android:visibility="gone" />
    </LinearLayout>

现在单击自定义视图,我将更改布局高度,如下所示

llArrowText.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {



            RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
                    ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
            params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
            rlTreatmentDone.setLayoutParams(params);



            doneViewController.setStartControllerClicked(true);
        }
    });

这将移动自定义视图,如下所示 enter image description here

1 个答案:

答案 0 :(得分:0)

在您的代码中,您已将LayoutParams高度设置为WRAP_CONTENT而不是MATCH_PARENT,我猜您实际上打算做什么?这将使"@+id/rlTreatmentDone"更小并将其向上移动。