android - 横跨 View 的对角线

标签 android xml drawable diagonal layerdrawable

基于某些条件,我必须对角切割列表单元格。为此,我使用以下代码制作了对角线可绘制图像:

对角线.xml

 <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:top="0dp"
        android:bottom="0dp"
        >
        <rotate
            android:fromDegrees="315"
            android:toDegrees="315"
            android:pivotX="0%"
            android:pivotY="0%" >
            <shape
                android:shape="line"
                >
                <stroke
                    android:width="10dp"
                    android:color="@color/grey" />
            </shape>
        </rotate>
    </item>
    </layer-list>

在列表单元格的 xml 中,它用作:

 <ImageView 
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:background="@drawable/diagonal_line"
    android:layerType="software"
    android:scaleType="fitXY"
    />

这条对角线出现在单元格 xml 的图形 View 中,但在列表膨胀后不会出现。目前它的可见性独立于任何条件,即可见性始终为真。

知道问题出在哪里吗?

最佳答案

对角线的自定义 View 是:

import android.content.Context;
import android.content.res.Resources;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;
public class DiagonalLineView extends View {

private int dividerColor;
private Paint paint;

public DiagonalLineView(Context context)
{
    super(context);
    init(context);
}

public DiagonalLineView(Context context, AttributeSet attrs)
{
    super(context, attrs);
    init(context);
}

public DiagonalLineView(Context context, AttributeSet attrs, int defStyle)
{
    super(context, attrs, defStyle);
    init(context);
}

private void init(Context context)
{
    Resources resources = context.getResources();
    dividerColor = resources.getColor(R.color.grey);

    paint = new Paint();
    paint.setAntiAlias(true);
    paint.setColor(dividerColor);
         paint.setStrokeWidth(resources.getDimension(R.dimen.vertical_divider_width));
}

@Override
protected void onDraw(Canvas canvas)
{
    super.onDraw(canvas);
    canvas.drawLine(0, getHeight(), getWidth(), 0, paint);
}

}

它对我有用。

关于android - 横跨 View 的对角线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26278084/

相关文章:

android - 使图像以循环方式消失

android - Lollipop 前层列表中的项目大小不正确

java - Android 复选框白色边框

java - 运行相机应用程序时出错

android - 使用 Koin 进行依赖注入(inject)

"top bar"和 "bottom bar"之间的 ListView 的 Android 布局

java - 在 JAVA 中解析大型 XML 文档

json - Node.js 将 XML 转换为 JSON 并将其返回给前端

java - 如何以编程方式向 ImageView 添加圆角边框?

java - android字典int,Imageview