0

我正在尝试在我的应用程序中创建细条纹。这类似于我们在日历应用中看到的不同颜色的条纹。

有什么简单的方法可以做到。

我在做什么:我有一个用宽度和高度定义的形状,我试图将它应用于我的 ListView 的背景,因为它将占据 ListView 的某些部分。

发生了什么: 这被应用于整个背景。

我需要什么: 我正在寻找可以将其作为条纹而不是完整背景的帮助。或任何其他方式或替代方法来做同样的事情。

一些代码: rectangle.xml

<?xml version="1.0" encoding="utf-8"?>
<shape

    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners 
        android:radius="0dp"
        />
    <size 
        android:width="20dp"
        android:height="40dp"       />
    <solid 
        android:color="@color/opaque_red"
        />
</shape>

list_view_item_cell.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="95dp"
    android:divider="?android:dividerVertical"

    android:showDividers="middle" >

发布图片以更清楚:

4

2 回答 2

4

您可以添加宽度和高度等于您想要有彩色背景的特定部分的视图。例如,如果要显示宽度和高度 = 20dip 的彩色条带。这个彩色条应该出现在列表项的左上方。下面是示例

list_view_item_cell.xml

<?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="95dp"
        android:divider="?android:dividerVertical"
        android:showDividers="middle" >
<!-- You can use any view here. Set background "rectangle.xml" drawable to this view.-->
    <View  
        android:layout_width="20dip" 
        android:layout_height="20dip"
        android:background="@drawable/rectangle"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        />

    </RelativeLayout>
于 2014-08-21T04:43:54.810 回答
2

是的,可以通过编程方式更改形状的颜色。

假设您将 LayerDrawable 设置为视图背景:那么您可以执行以下操作:

LayerDrawable layerList = (LayerDrawable) view.getBackground();
    if(layerList != null) {
        final RotateDrawable shape = (RotateDrawable) layerList
                .findDrawableByLayerId(R.id.header_titled);
        final GradientDrawable tildShapeDrawable = (GradientDrawable)shape.getDrawable();
        if (tildShapeDrawable != null) {
            tildShapeDrawable.setColor(android.R.color.white);
        }
    }
于 2014-08-21T05:51:47.947 回答