3

在此处输入图像描述

当活动开始时,用户应该看到左侧

  • 即顶部的绿色视图被裁剪,只有它的底部可见
  • 并且下面的红色视图以交互方式可见,例如用户可以按下红色按钮
  • 并且在绿色视图的顶部注册的任何触摸事件都不应工作(在顶部不可见)

当用户触摸绿色视图的底部时,整个绿色视图应该变得可见

  • 现在为什么我不能为绿色视图设置一个上边距(类似于此图像的生成方式) - 原因是绿色视图在它包含手势检测并以某种方式响应这些手势的意义上是特殊的这高度依赖于它的全尺寸 - 所以我无法调整绿色视图的大小,而我仍然需要使它的一部分不可见(在用户触摸底部之前)

有什么建议么?

右侧的 XML,如何在不调整绿色视图大小的情况下获得左侧

绿色视图实际上不是一个 TextView,而是一个自定义视图组,其外观具有手势驱动的动画

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent">
    <RelativeLayout
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:layout_marginTop="20dp"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:layout_marginBottom="20dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
        <RelativeLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_alignParentLeft="true"
                android:layout_alignParentRight="true"
                android:layout_alignParentBottom="true"
                android:background="@drawable/border_red">
            <Button
                    android:background="@drawable/btn_red"
                    android:text="View Below Visible"
                    android:textSize="20sp"
                    android:layout_centerInParent="true"
                    android:layout_width="260dp"
                    android:layout_height="60dp"/>
        </RelativeLayout>
        <TextView
                android:layout_alignParentTop="true"
                android:layout_alignParentLeft="true"
                android:layout_alignParentRight="true"
                android:layout_alignParentBottom="true"
                android:background="@drawable/btn_green"
                android:text="View with Special Gesturing"
                android:textColor="@color/white"
                android:textSize="20sp"
                android:gravity="bottom"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
    </RelativeLayout>
</RelativeLayout>
4

1 回答 1

1

将绿色视图包裹在 LinearLayout 中,并在其上方放置一个加权透明视图。就像是:

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <View
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="7"/>
        <WhateverCustomViewGroup
            android:background="@drawable/btn_green"
            android:text="View with Special Gesturing"
            android:textColor="@color/white"
            android:textSize="20sp"
            android:gravity="bottom"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"/>
    </LinearLayout>

将手势检测器附加到 LinearLayout 而不是绿色视图,因此它在折叠时仍然可以响应。要扩展,只需setVisibility(GONE)在空视图上,绿色视图将扩展至其完整大小。

于 2012-10-11T21:40:23.353 回答