2014-10-26 30 views
0

我是Android的新手,我有这个问题:形状drawable不能应用于TextView。 我TextView的Java代码如下:为什么形状不能适用于android中的textview

shape = getResources().getDrawable(R.drawable.shape_tag_round_corner); 
this.setBackgroundDrawable(shape); 
this.setBackgroundColor(color); 
this.setText(roleName); 
this.setGravity(Gravity.CENTER); 

XML形状:

<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
<corners android:radius="5dp"></corners> 
<padding 
    android:left="5dp" 
    android:top="0dp" 
    android:right="5dp" 
    android:bottom="0dp" 
/> 
</shape> 

最后,TextView中没有得到在代码中设置好的形状和颜色,为什么呢?

回答

0

您只能有一个可绘制的背景。

首先你设置形状(这是透明的),然后用颜色替换它。

如果你想有一个花形,使用XML:

<shape xmlns:android="http://schemas.android.com/apk/res/android"> 

    <solid android:color="#ffffff" /> 

    <corners android:radius="5dp"></corners> 
    <padding 
    android:left="5dp" 
    android:top="0dp" 
    android:right="5dp" 
    android:bottom="0dp" 
/> 
</shape> 

然后:

shape = getResources().getDrawable(R.drawable.shape_tag_round_corner); 
shape.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.DST_ATOP)); 
this.setBackgroundDrawable(shape); 
+0

这是正确的,其实我想每次都改变颜色,所以如何使它,谢谢。 – liaoheng 2014-10-26 15:10:04

+0

我已经更新了我的答案。 (你仍然需要指定一个颜色,而不是透明的形状) – 2014-10-26 15:20:02

+0

我已经尝试了几次不同类型的PorterDuff.Mode,但它没有起作用。颜色总是被忽略。最终,我使用不同的xml文件来实现感谢您提供这些建议并帮助我改进编辑,您真是太棒了! – liaoheng 2014-10-26 15:55:58

0

您可以在Android的textviews形状,去你的XML文件,并查找代码 INTIAL行,他们将是这个样子

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context=".ScreenOnOff" > 

这里再lative布局是一种可绘制的视图,并且在xml文件中尝试重力而不是通过java。您的可绘制问题将在xml本身中解决。希望这是一些帮助

相关问题