Я не уверен, что мой вопрос понятен. В моем макете есть Image
и ViewGroup
. ViewGroup
можно сравнить с GridView
, где у меня есть элементы, которые я могу перетаскивать. Теперь мне интересно перетаскивать элементы моего ViewGroup
по изображению, но каждый раз, когда я пытаюсь, элементы имеют более низкий z-индекс, потому что они исчезают за изображением.
Я уже пробовал комбинации с 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>
EDIT: I use a BaseAdapter to display the layout, because I have a dynamically amount of pages, that can be flipped using this library 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()-Methods определяет размер каждого элемента группы просмотра. Я хотел бы установить элемент группы просмотра на передний план, когда он выбирается длинным щелчком. Longclicklistener выглядит так:
@Override
public boolean onLongClick(View view) {
draggedItem = getDraggedView(); draggedItem.bringToFront();
callback.bringGridToFront();
return true;
}
Я пытаюсь вывести элемент на передний план вот так, но это не работает... переменная обратного вызова является экземпляром класса базового адаптера, который вызывает метод 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);
}