我在行中使用带有ImageView的ListView。
我需要在这些ImageView之间绘制线条。
因此,一行在ImageView位置的第一行开始,在ImageView位置的第二行结束。等等。
绘制这些线条的最佳方法是什么?
谢谢。
更新。对不起,我无法上传图片而且英语说得不太好。
它不是行之间的水平分隔符。如果要简化它:行在ImageView位置的一行的垂直中心开始,在ImageView位置以下一行的垂直中心结束。
我想我应该尝试:
覆盖行视图。 在Adapter的GetView中,我创建行视图传递到相邻行的此行视图坐标。 在视图的onDraw方法中计算坐标和绘制线。
覆盖ListView。在它的OnDraw方法中尝试获取ImageView的位置并绘制所有行。
答案 0 :(得分:6)
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ListView
android:id="@+id/android:list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:divider="#FFCC00"
android:dividerHeight="4px"/>
</LinearLayout>
拥有listview分隔符。
答案 1 :(得分:1)
我不确定我是否正确理解了你的问题,但这应该在行之间做出非常好的渐变线:
mListView = getListView();
mAdapter = new ServersListAdapter(this, new String[] {},
new String[] {}, new String[] {});
int[] colors = { Color.parseColor("#D3D3D3"), Color.parseColor("#D3D3D3"), Color.parseColor("#D3D3D3") };
mListView.setDivider(new GradientDrawable(Orientation.RIGHT_LEFT, colors));
答案 2 :(得分:1)
这是可以在其中画线的视图的示例。创建此类,并在需要时刷新调色板。
public class LineTextView extends AppCompatTextView {
private Paint paint = new Paint();
public LineTextView(Context context) {
super(context);
}
public LineTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public LineTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
paint.setColor(Color.parseColor("#000000"));
paint.setStrokeWidth(2);
paint.setStyle(Paint.Style.FILL);
canvas.drawLine(0, 0, 0, getHeight(), paint);
}
}
现在您可以在layout
<LinearLayout
android:layout_width="2dp"
android:layout_height="match_parent"
android:orientation="vertical">
<com.example.taskmodel.view.LineTextView
android:id="@+id/lineTextViewTopHalf"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:visibility="invisible"/>
<com.example.taskmodel.view.LineTextView
android:id="@+id/lineTextViewBottomHalf"
android:layout_width="2dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>