编辑:我刚刚意识到,如果我想添加按钮或下面的任何内容,我希望能够拖动它们。那么也许我的解决方案是改变卡片的Z-Index,使它们出现在FrameLayout
之外?
我有一个FrameLayout
:
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/stack"
/>
我在其中放了一个RelativeLayout
,其中包含一些项目,但格式为:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:font="http://schemas.android.com/apk/res-auto"
android:layout_width="300dp"
android:layout_height="300dp"
android:background="@drawable/card_background"
android:layout_centerInParent="true"
>
我将FrameLayout
设置为match_parent
的唯一原因是,用户可以将相对布局拖到屏幕上的任意位置,如果FrameLayout
的宽度和高度为{ {1}},wrap_content
在被拖动时被裁剪。但是,当RelativeLayout
触及match_parent
触发器FrameLayout
的触摸事件时,LinearLayout
触及它。
对于上下文,我正在尝试显示一堆相同大小的卡片,然后让用户将顶部的卡片逐个拖出屏幕。
答案 0 :(得分:0)
我最终直接添加到RelativeLayout
。不幸的是,当手动创建一个类时,一些重力设置丢失了,所以我做了类似的事情:
int size = ScreenMetricUtil.convertPixelToDp(getActivity().getBaseContext(), 300);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(size, size);
params.addRule(RelativeLayout.CENTER_IN_PARENT);
card.setLayoutParams(params);
container.addView(card); // add to LinearLayout
我的助手方法(source):
public static int convertPixelToDp(Context context, int pixels) {
float density = context.getResources().getDisplayMetrics().density;
return (int) (pixels * density + 0.5f);
}