我不确定我的问题是否可以理解。我的布局中有一个Image
和ViewGroup
。 ViewGroup
与GridView
相当,我有物品,可以拖放。 现在我有兴趣将图片上的ViewGroup
的项目拖动到图片上,但是每次尝试时,这些项目似乎都有较低的Z-index,因为图片背后消失了。是否有可能将ViewGroups项目放在ViewGroups兄弟之前?
我已经尝试与bringToFront
上ViewGroup
及其项目的组合,但没有任何工作。现在我的问题是,是否有可能将viewgroups
项目放在viewgroups
兄弟之前。有没有人有这方面的经验?
我的XML看起来是这样的,其中GridView
是我Viewgroup
...图像的图像资源和可见性代码设置:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relative_gridview_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:tag="@string/tag_fragment_GridView"
android:background="#FFF"
android:orientation="vertical" >
<ImageView
android:id="@+id/img"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:visibility="gone" />
<de.test.GridView
android:id="@+id/grid_view1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/img"
android:background="#FFF"
android:gravity="center"
android:numColumns="auto_fit"
android:stretchMode="none"
android:tag="grid_view_tag" >
</de.test.GridView>
编辑: 我使用BaseAdapter来显示布局,因为我有一个动态数量的页面,可以使用这个库https://github.com/openaphid/android-flip翻转。
创建类似下面的布局:
public View loadView(final View view, final int position) {
final GridView dgv = (GridView) view
.findViewById(R.id.grid_view1);
dgv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(android.widget.AdapterView<?> arg0, View v,
int position, long arg3) {
// Simple click listener for the items...
}
});
dgv.getViewTreeObserver().addOnGlobalLayoutListener(
new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (Build.VERSION.SDK_INT < 16) {
dgv.getViewTreeObserver()
.removeGlobalOnLayoutListener(this);
} else {
dgv.getViewTreeObserver()
.removeOnGlobalLayoutListener(this);
}
int displayHeight = view.getHeight();
int displayWidth = view.getWidth();
dgv.initChilds(displayWidth, displayHeight,
2,
2);
} else {
mImage = (ImageView) view
.findViewById(R.id.img);
mImage.getLayoutParams().height = displayHeight/2;
mImage.setImageResource(R.drawable.bild);
dgv.initChilds(displayWidth,
displayHeight/2, 2,
2);
}
updateGridView();
}
});
mList.add(view);
return view;
}
的initChilds() - 方法确定的ViewGroup的每个项目的大小。我想将viewgroup项目设置在前面,当它被longclick选中时。该longclicklistener看起来像这样:
@Override
public boolean onLongClick(View view) {
draggedItem = getDraggedView(); draggedItem.bringToFront();
callback.bringGridToFront();
return true;
}
我尝试将项目这样前面,但它不工作...回调变量是baseadapter类,它调用bringGridToFront的一个实例() - 目前执行以下代码的方法:
public void bringGridToFront() {
View view = mList.get(mCurrentPage);
RelativeLayout rl = (RelativeLayout) view.findViewById(R.id.relative_gridview_layout);
GridView dgv = (GridView) view.findViewById(R.id.grid_view1);
rl.bringChildToFront(dgv);
}
我想过这样的事情:gridView.bringToFront(); item.bringToFront();其中项目是gridview的拖动项目...但它不起作用 – androider
我认为有一个bringchildtofront函数。在你的情况下,你将不得不像这样调用它(relative_gridview_layout).bringchildtofront(grid_view1)。 – Christos
嘿克里斯托斯,感谢您的回答;)我试过了你的建议,但不幸的是它不工作...如果我试图拖拽视图组的孩子在图像上,它仍然落后于 – androider