下图是我正在寻找的 Listview 行。它的库存清单。
问题:
如何绘制/创建这种列表视图行,其中
1)第一列没有水平。或垂直。分割线。
2)第二列是一种带有两个水平的盒子。和垂直分割线。
第二列和第三列之间有一个空格。
3) 第三列是标准列表视图行,其中包含文本和小图标。
如何结合所有 3 使这成为一个爵士乐行?:)
我确实知道如何仅使用第 3 列来制作列表视图;与文本和图像。但是列间距和垂直线是我不知道的。
谢谢你的任何建议
雅各布
下图是我正在寻找的 Listview 行。它的库存清单。
问题:
如何绘制/创建这种列表视图行,其中
1)第一列没有水平。或垂直。分割线。
2)第二列是一种带有两个水平的盒子。和垂直分割线。
第二列和第三列之间有一个空格。
3) 第三列是标准列表视图行,其中包含文本和小图标。
如何结合所有 3 使这成为一个爵士乐行?:)
我确实知道如何仅使用第 3 列来制作列表视图;与文本和图像。但是列间距和垂直线是我不知道的。
谢谢你的任何建议
雅各布
创建一个布局,如ListView
. 我只是在你的路上帮助你。请注意,您可能想要进行一些改进,例如,不要对“正方形”的大小进行硬编码,而是从dimens.xml
不同的屏幕密度/大小存储桶中提供它们。
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="?android:attr/listPreferredItemHeight"
android:gravity="center_vertical">
<View android:layout_width="30dp" android:layout_height="30dp"
android:layout_margin="5dp" android:background="@drawable/border_color_red" />
<TextView android:layout_width="?android:attr/listPreferredItemHeight"
android:layout_height="?android:attr/listPreferredItemHeight"
android:background="@drawable/border" android:gravity="center"
android:text="QTY" android:textAppearance="?android:attr/textAppearanceMedium" />
<RelativeLayout android:layout_width="0dp"
android:layout_height="?android:attr/listPreferredItemHeight"
android:layout_marginLeft="5dp" android:layout_marginRight="5dp"
android:layout_weight="1" android:background="@drawable/border"
android:gravity="center_vertical" android:padding="5dp">
<TextView android:id="@android:id/text1"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_centerVertical="true" android:layout_toLeftOf="@+id/star"
android:textAppearance="?android:attr/textAppearanceMedium" />
<CheckBox android:id="@+id/star" style="?android:attr/starStyle"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_centerVertical="true" android:layout_toLeftOf="@+id/box_right"
android:text=" " />
<View android:id="@+id/box_right" android:layout_width="30dp"
android:layout_height="30dp" android:layout_alignParentRight="true"
android:layout_centerVertical="true" android:layout_margin="5dp"
android:background="@drawable/border_color_red" />
</RelativeLayout>
</LinearLayout>
将ListView
需要隐藏其分隔线:
<ListView android:id="@android:id/list" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:divider="@null">
<!-- Preview: listitem=@layout/list_item_layout -->
</ListView>
使用简单的添加边框ShapeDrawable
:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke android:height="1dp" android:width="1dp" android:color="#000" />
<solid android:color="@android:color/transparent" />
</shape>
更改solid
颜色以创建不同的填充颜色(例如正方形)。
结果看起来有点像这样:
最大的缺点是没有真正简单的方法来摆脱不同行之间的“双”分隔符。如果它真的困扰你,肯定有几种方法可以解决它们(例如,为适配器中的第一个和最后一个项目膨胀不同的布局,或者将第一个和最后一个项目添加为页眉和页脚,或者将行分解为然后可以切换的单独视图等...)。
我没有添加,ImageView
因为那将是不言自明的。将其放置在与“项目”相同的位置,TextView
并根据您是要显示文本还是图像来在两者之间切换。
我假设您将能够Adapter
为布局提出匹配的(和“ViewHolder”/“RowWrapper”)。
如果仍有任何不清楚的地方,请留下一行。:)
我使用 TableLayout 和 TableRow 做了类似的事情。它允许您在 XML 中制作“行模板”,然后按照您想要的任何顺序实现它们。
假设您的活动使用布局 main.xml:
setContentView(R.layout.main);
然后,您将根据需要对每个行模板进行膨胀:
LayoutInflater myInflate = (LayoutInflater)getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row1 = (TableRow) myInflate.inflate(R.layout.matchesoverviewlistitem, null);
// Here you can do anything you want with the table row elements
tv = (TextView)row1.findViewById(R.id.matchesOverLabel);
tv.setText("MyText");
row1.setTag(n);
row1.setOnClickListener(seriesListener);
// Finally add the table row to the tableLayout
myTable.addView(row1,new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
当对多行使用不同的布局时,这对我来说效果很好。