Рисовать линии между строками ListView
У меня есть ListView с ImageView в строках.
Мне нужно нарисовать линии между этими ImageViews.
Таким образом, одна строка начинается в первом ряду в позиции ImageView и заканчивается во втором ряду в позиции ImageView. И так далее.
Как лучше всего нарисовать эти линии?
Спасибо.
ОБНОВИТЬ. Извините, я не могу загрузить изображение и плохо говорю по-английски.
Это не горизонтальный разделитель между рядами. Если упростить это: линия начинается в вертикальном центре одного ряда в положении ImageView и заканчивается вертикальным центром следующего ряда в положении ImageView.
Я думаю, что я должен попробовать:
Отменить просмотр строки. В GetView Адаптера, где я создаю представление строки, передаем в эту строку координаты соседних строк. В методе onDraw представления рассчитайте координаты и нарисуйте линию.
Переопределить ListView. В его методе OnDraw попробуйте получить позиции ImageView и нарисовать все линии.
2 ответа
<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>
Есть разделитель списка.
Я не уверен, правильно ли я понял ваш вопрос, но это должно создать действительно хорошие градиентные линии между строками:
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));
Это пример представления, в котором вы можете провести линию. Создайте этот класс, обновите палитру, если вам нужно.
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>