【发布时间】:2019-03-22 09:09:30
【问题描述】:
我正在尝试使用多张点击翻转的卡片进行活动。
我有一个 Framelayout(卡片)和另外两个 Framelayout(卡片的两侧),如下所示:
<FrameLayout
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_margin="5dp"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:onClick="flipCard">
<FrameLayout
android:id="@+id/card_back1"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include layout="@layout/card_back" />
</FrameLayout>
<FrameLayout
android:id="@+id/card_front1"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include layout="@layout/card_front" />
</FrameLayout>
</FrameLayout>
我有“flipCard”方法应该启动对象动画器并将它们的目标设置为两个框架布局(卡片的侧面)。
然而,partent framelayout(卡片)是调用“flipcard”方法的视图,它是onclick,但在“flipcard”方法中,我需要将目标设置为子视图。我想过为此使用 .getChildAt() 方法,但我无法使其工作。
翻转卡方法:
public void flipCard(View view) {
if (!mIsBackVisible) {
mSetRightOut.setTarget(view.getChildAt(1));
mSetLeftIn.setTarget(view.getChildAt(0));
mSetRightOut.start();
mSetLeftIn.start();
mIsBackVisible = true;
} else {
mSetRightOut.setTarget(view.getChildAt(0));
mSetLeftIn.setTarget(view.getChildAt(1));
mSetRightOut.start();
mSetLeftIn.start();
mIsBackVisible = false;
}
}
如果我将 flipCard 方法更改为“flipCard(ViewGroup Viewgroup) 它不起作用,因为 xml 中的 onClick 正在寻找一个采用 View 而不是 ViewGroup 的方法。
我需要 onClick 位于父 Framelayout 上,但我需要以某种方式通过它获取子框架布局。
我怎样才能使我最初的想法发挥作用,或者如果我不能,我应该尝试什么其他解决方案?
编辑:解决方案就像放置“ViewGroup viewGroup = (ViewGroup) view;”一样简单在 flipCard 方法的开头。
【问题讨论】:
-
您可以尝试拨打
view.findViewById(R.id.card_front1)而不是getChildAt() -
@Alexander 问题在于,我有多张卡,而不仅仅是一张。我需要调用被点击的前视图的孩子,而不是总是 card_front1。