Android - 在设置布局参数时不显示视图

时间:2014-05-11 14:08:06

标签: android android-framelayout

在我的Android应用程序中,我正在定义以下布局,该工作正常。

     <FrameLayout
        android:id="@+id/frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/black">
        <com.test.zoom.ImageZoomView
            android:id="@+id/zoomview"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>

        <ZoomControls
            android:id="@+id/zoomControls"
            android:layout_width="130dp"
            android:layout_height="50dp"
            android:layout_gravity="bottom|right"/>
    </FrameLayout>

但是当在FrameLayout上设置布局参数时,ZoomControls就消失了。 你有提示我做错了吗?

    ViewTreeObserver viewTreeObserver = frame.getViewTreeObserver();
    if (viewTreeObserver.isAlive()) {
        viewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                frame.getViewTreeObserver().removeGlobalOnLayoutListener(this);
                frame.setLayoutParams(new LinearLayout.LayoutParams(frame.getMeasuredWidth(), frame.getMeasuredWidth()));
            }
        });
    }

1 个答案:

答案 0 :(得分:0)

您的ZoomControls是FrameLayout的子级。因此,如果删除FrameLayout,它的所有子项(com.test.zoom.ImageZoomView&amp; ZoomControls)也将被删除。
尝试使ZoomControl独立于FrameLayout,如下所示:

<FrameLayout
    android:id="@+id/frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/black">
    <com.test.zoom.ImageZoomView
        android:id="@+id/zoomview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</FrameLayout>

<ZoomControls
        android:id="@+id/zoomControls"
        android:layout_width="130dp"
        android:layout_height="50dp"
        android:layout_gravity="bottom|right"/>