我有一个android原生listview.now我必须隐藏只有选定行的分隔符和它的邻居行,如下图所示。我能做到吗?
这是我的lisview代码
ClientConstants.RESOURCES = "/main/resources/images/";
if (status.equals(ClientConstants.STATUS_OFFLINE))
{
img = ClientConstants.RESOURCES+"ON.png";
action = "Connect";
}
else
{
img = ClientConstants.RESOURCES+"OFF.png";
action = "Disconnect";
}
Image imageConnect = new Image(getClass().getResourceAsStream(img));
ImageView viewBottom = new ImageView(imageConnect);
到目前为止的结果
答案 0 :(得分:1)
在自定义列表项布局中创建自定义分隔视图。 然后,如果选择了某个项目,则隐藏此自定义分隔视图。
风格:
<style name="HorizontalDivider">
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">1px</item>
<item name="android:background">#444</item>
</style>
自定义列表项:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingLeft="5dp"
android:background="@drawable/click_effect_green"
android:orientation="vertical" >
<TextView
android:id="@+id/line_a"
android:layout_marginTop="4dp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#000"
android:textSize="16dp"
android:textStyle="bold" />
<TextView
android:id="@+id/line_b"
android:layout_marginBottom="4dp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#000"
android:textSize="14dp" />
<View id="@+id/divider" style="@style/HorizontalDivider"/>
</LinearLayout>
答案 1 :(得分:1)
您必须按照以下步骤操作:
删除列表视图分隔符
<ListView
android:id="@+id/listView_errors"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:divider="@null"
android:listSelector="@drawable/bgselected"
android:scrollbars="none" />
添加了list_item.xml
视图,视为list_divider
<View
android:id="@+id/list_divider"
android:layout_width="fill_parent"
android:layout_height="1dip"
android:background="@android:color/black" />
您可以在选择列表项时删除视图分隔符,就像您在onItemClick
上选择那样它应该是
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
view.findViewById(R.id.list_divider).setVisibility(View.GONE);
}
这是您可以执行任何自定义行的解决方案。
答案 2 :(得分:0)
onSelect
代码
yourListView.setDivider(null);
或
yourListView.setDivider(new ColorDrawable(android.R.color.transparent));
yourListView.setDividerHeight(0);
答案 3 :(得分:-1)
<强> list_item.xml 强>
Menu menuAccount = navigationView.getMenu().findItem(R.id.drawer_item_account).getSubMenu();
menuAccount.findItem(R.id.drawer_item_login).setVisible(!isLoggedIn);
<强> 的Listview 强>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="55dp"
android:orientation="vertical"
>
<TextView
android:id="@+id/item_complaint"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="20dp"
android:text="Daily Consumption"
android:textColor="#505050"
android:textSize="18sp"
android:textStyle="bold" />
<View
android:id="@+id/item_divider"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_alignParentBottom="true"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="#9e9e9e" />
</RelativeLayout>
<强> 适配器 强>
<ListView
android:id="@+id/listView_errors"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="@null"
android:layout_gravity="center_horizontal"
android:listSelector="@drawable/bgselected"
android:scrollbars="none" />
分隔控制器
ArrayAdapter<String> ar = new ArrayAdapter<String>(getActivity(), R.layout.complaint_listview, R.id.item_complaint, errors);
listErrors.setAdapter(ar);