Android如何在setBackgroundColor上实现渐变效果

4
有没有办法在设置视图的背景颜色时获得渐变效果或半透明效果?例如,这段代码:
selView.setBackgroundColor(Color.rgb(240, 128, 128)); // light red

在列表视图中突出显示所选视图。使用渐变或背景都很酷。

3个回答

14
您需要首先在xml中创建一个渐变。
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
  android:shape="rectangle"> 
  <gradient 
  android:startColor="#FFFF00FF" 
  android:endColor="#FFFFFFFF" 
  android:angle="270"/> 
</shape>

你应该将这个代码段添加到你的drawables.xml文件中。然后你就可以在xml中将其应用到你的ListView上了。

android:background=@drawable/yourdrawable
或者
setBackgroundResource(R.drawable.yourdrawable);

谢谢你的回答。我无法使用它,因为颜色对我的应用程序来说有点太暗了。我不确定它是否有效,因为即使更改颜色,它看起来仍然一样。 - Jack BeNimble
你在更改梯度定义后,尝试重新构建/清理项目了吗? - nicholas.hauschild
好的,问题在于我需要使用setBackgroundResource - 现在它像魔法一样工作了。谢谢! - Jack BeNimble

8

我将给您提供一份样本代码。

  <item android:state_pressed="true" >
    <shape>
    <gradient
    android:startColor="#ff5500"
    android:endColor="#999999"
    android:angle="270" />
    <stroke
    android:width="3dp"
    android:color="#999999" />
    <corners
    android:radius="3dp" />
    <padding
    android:left="10dp"
    android:top="10dp"
    android:right="10dp"
    android:bottom="10dp" />
    </shape>
    </item>

    <item android:state_focused="true" >
    <shape>
    <gradient
    android:endColor="#ff5500"
    android:startColor="#999999"
    android:angle="270" />
    <stroke
    android:width="3dp"
    android:color="#999999" />
    <corners
    android:radius="3dp" />
    <padding
    android:left="10dp"
    android:top="10dp"
    android:right="10dp"
    android:bottom="10dp" />
    </shape>
    </item>

    <item> 
    <shape 
    android:shape="rectangle">

    <gradient android:type="radial" android:gradientRadius="50"
    android:startColor="#999999" android:endColor="#000000" />
    <!-- <corners-->
    <!-- android:radius="10dp" />-->
    <corners android:bottomRightRadius="7dp" android:bottomLeftRadius="7dp" 
    android:topLeftRadius="7dp" android:topRightRadius="7dp"/> 
    </shape>
    </item>
    </selector>

将此应用于您的可绘制视图。

-1
setBackgroundDrawable(R.drawable.my_fancy_gradient_or_picture)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接