2

我有 ListView 和 ImageView 在行中。

我需要在这些 ImageViews 之间画线。

因此,一行从 ImageView 位置的第一行开始,在 ImageView 位置的第二行结束。等等。

画这些线的最佳方法是什么?

谢谢你。

更新。很抱歉,我无法上传图片,而且我的英语说得不太好。

它不是行之间的水平分隔线。如果为了简化它:行从 ImageView 位置的一行的垂直中心开始,到 ImageView 位置的下一行的垂直中心结束。

我想我应该尝试:

  1. 覆盖行视图。在我创建行视图的适配器的 GetView 处,传递到相邻行的此行视图坐标。在视图的 onDraw 方法中计算坐标并画线。

  2. 覆盖 ListView。在它的 OnDraw 方法中,尝试获取 ImageView 的位置并绘制所有线条。

4

3 回答 3

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>

有一个列表视图分隔符。

于 2012-11-07T13:30:10.463 回答
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));
于 2012-11-07T13:27:33.473 回答
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>
于 2019-09-06T00:06:26.667 回答