Leg*_*end 367

这是一种方法(感谢Android文档!):

将以下内容添加到文件(例如customshape.xml)中,然后将其放入(res/drawable/customshape.xml)

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shape="rectangle"> 
     <gradient 
         android:startColor="#SomeGradientBeginColor"
         android:endColor="#SomeGradientEndColor" 
         android:angle="270"/> 

    <corners 
         android:bottomRightRadius="7dp" 
         android:bottomLeftRadius="7dp" 
         android:topLeftRadius="7dp" 
         android:topRightRadius="7dp"/> 
</shape> 
Run Code Online (Sandbox Code Playgroud)

完成创建此文件后,只需使用以下方法之一设置背景:

通过代码: listView.setBackgroundResource(R.drawable.customshape);

通过XML,只需将以下属性添加到容器中(例如:LinearLayout或任何字段):

android:background="@drawable/customshape"
Run Code Online (Sandbox Code Playgroud)

希望有人发现它有用......

  • 但是它不适用于选择突出显示:当选择顶部或底部项目时,它的彩色背景是矩形的,并绘制在圆角背景的顶部. (28认同)
  • 谢谢你的好消息.仅供参考,复制粘贴给了我一个运行时异常,说"XmlPullParserException:二进制XML文件行#4 <gradient>标记需要'angle'属性为45的倍数".通过将角度更改为270,可以轻松解决. (2认同)

Kev*_*ker 56

虽然这确实有效,但它也取出了整个背景颜色.我正在寻找一种方法来做边框,只是用这个替换XML布局代码,我很高兴去!

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke android:width="4dp" android:color="#FF00FF00" />
    <padding android:left="7dp" android:top="7dp"
            android:right="7dp" android:bottom="7dp" />
    <corners android:radius="4dp" />
</shape> 
Run Code Online (Sandbox Code Playgroud)


小智 12

@克里斯 - 范 - 巴尔

对于那些选择突出显示选项高亮显示背景矩形在选择中显示的顶行和底行的人,您需要将列表视图的选择器设置为透明颜色.

listView.setSelector(R.color.transparent);
Run Code Online (Sandbox Code Playgroud)

在color.xml中添加以下内容 -

<color name="transparent">#00000000</color>
Run Code Online (Sandbox Code Playgroud)

  • 它对我不起作用.然而,我添加了以下行,它摆脱了它:`android:cacheColorHint ="@ android:color/transparent"` (5认同)
  • 而不是以编程方式执行此操作,将其添加到XML布局中的ListView以隐藏选择颜色:android:listSelector ="#00000000" (3认同)