是否可以将相对布局的子项与另一个孩子的顶部对齐?

时间:2015-07-27 17:51:14

标签: android android-layout android-animation

我的相对布局包含一些文本视图和一个(圆形)图像视图,图像视图位于中间。

有一个从相对布局的中心发出的扩展环的动画,当图像视图也居中时,也会从图像视图的中心发出。

然而,现在需要垂直向上移动图像视图,使其不再位于布局的中心,因此动画的原点也需要垂直移动相同的程度。

这是动画实现方式的草图,它只显示了一小部分代码,以显示其实现的主要特征。

rippleParams.addRule(CENTER_IN_PARENT, TRUE)

这就是它目前实现的方式,我想知道我是否可以用其他规则替换VS_NEEDSNEWMETADATA,但我看不到任何适用的其他规则。

我想知道是否可以使用规则来对齐动画视图,使其不再以父RelativeLayout为中心,而是在RelativeLayout内的imageView上?

或者是否可以指定坐标,或者我可以将动画的原点移动到与imageView中心相匹配的其他方式?

1 个答案:

答案 0 :(得分:1)

和你一样,我看不出你怎么能用一个简单的规则来做到这一点,但是你能做的就是将你的RippleView包裹在FrameLayout上并加上一些paddingBottom与您ImageView从中心向上移动的金额相匹配。

例如,如果您的ImageView现在100dp位于RelativeLayout的中心位置,那么您还需要将paddingBottom设置为100dpFrameLayout包裹你的RippleView为了让我更清楚我的意思,这里是实现它的XML布局(我只使用XML,因为我认为它更清楚发生了什么,我是相信你能够轻松地将它翻译成代码中的编程方式):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MyActivity">

    <FrameLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#0f0"
        android:layout_centerInParent="true"
        android:paddingBottom="100dp"
        >
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_launcher"
            android:background="#f00"/>
    </FrameLayout>
</RelativeLayout>

我已经为FrameLayoutImageView添加了背景颜色(在您的情况下将是RippleView),因此您可以清楚地看到它们的界限 - 请注意{{ 1}}完全包含在ImageView

Screen Shot

另一种选择是将FrameLayoutImageView置于RippleView的宽度和高度设置为FrameLayout,然后定位wrap_content你应该放置FrameLayout并设置ImageView RippleView layout_gravity="center" on your RippleView , so that the ImageView ends up centred on the FrameLayout by virtue of the fact the bounds of the ImageView` - 例如:

match the bounds of the

Screen Shot 2