我的应用程序中有一个 ListView,在用户请求后,它可以通过在每个列表视图行的开头拖动图像视图来重新排列。我在一个小窗口中向用户展示列表视图,为了最大化空间,我将拖动视图的可见性设置为 GONE,并计划仅在用户选择需要编辑列表的菜单项时将其设置为可见项目。
这是行项目的布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?android:attr/activatedBackgroundIndicator"
android:orientation="horizontal" >
<ImageView
android:id="@id/drag_handle"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_margin="8dp"
android:visibility="gone"
android:src="@drawable/ic_drag_dots_holo_dark" />
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:layout_marginBottom="16dp"
android:layout_marginTop="16dp"
android:background="?android:attr/dividerVertical" />
<TextView
android:id="@+id/drag_n_drop_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:maxLines="1"
android:minHeight="24dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="?android:attr/textColorPrimary" />
</LinearLayout>
这是菜单选择的代码:
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_edit_playlist:
if (inEditMode) {
//If we are already showing the drag view, hide it.
inEditMode = false;
findViewById(R.id.drag_handle).setVisibility(View.GONE);
}
else {
//If the drag view is hidden, make it visible.
inEditMode = true;
findViewById(R.id.drag_handle).setVisibility(View.VISIBLE);
}
return true;
default:
return super.onContextItemSelected(item);
}
}
这段代码的问题在于,当我调用setVisibility()
它时,它只会更改列表视图第一个项目上拖动视图的可见性,而所有其他行上的拖动视图仍然隐藏。
在这种情况下,我该怎么做才能使所有行上的所有 dragViews 可见?
编辑 这是我希望它在按下编辑后的样子的图像,这是它现在的样子,上面的代码。
谢谢!