Нарисуйте горизонтальную линию внизу программы
Я должен изменить цвет разделителя моего listView динамически.
решение:
Поэтому я создаю Drawable программно, который рисует горизонтальную линию и устанавливает ее в качестве фона моего convertView. Теперь строка находится в середине моего convertView. Как я могу выровнять его по дну?public class DividerView extends Drawable { private Paint mPaint; public DividerView() { mPaint = new Paint(); mPaint.setStrokeWidth(3); } @Override public void draw(Canvas canvas) { int lvl = getLevel(); Rect b = getBounds(); float x = b.width() * lvl / 10000.0f; float y = (b.height() - mPaint.getStrokeWidth()) / 2; mPaint.setColor(Color.BLACK); canvas.drawLine(x, y, b.width(), y, mPaint); } @Override protected boolean onLevelChange(int level) { invalidateSelf(); return true; } @Override public void setAlpha(int alpha) { } @Override public void setColorFilter(ColorFilter cf) { } @Override public int getOpacity() { return PixelFormat.TRANSLUCENT; } }
решение:
Я также попытался использовать фигуру в качестве разделителя и изменить ее цвет. Но я получаю следующее исключение:LayerDrawable cannot be cast to android.graphics.drawable.GradientDrawable
Как я могу получить доступ к обводке в моем списке слоев?
Вот мой код:
divider.xml
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle" >
<solid android:color="@android:color/transparent" />
</shape>
</item>
<item android:top="-6dp" android:right="-6dp" android:left="-6dp">
<shape>
<solid android:color="@android:color/transparent" />
<stroke
android:width="1dp"
android:color="#000000" />
</shape>
</item>
ListAdapter.java
GradientDrawable drawable = (GradientDrawable)convertView.getBackground();
drawable.setStroke(3, Color.RED);
convertView.setBackground(drawable);