2017-05-16 29 views
3

我有这个xml在哪里我已经设置了笔触颜色,但我有时我想要以编程方式更改stoke颜色。文件名是dummy.xmlJava android xml文件中改变颜色

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="#ffffffff" /> 

    <stroke 
     android:width="1dp" 
     android:color="#ff000000" /> 

    <padding 
     android:bottom="1dp" 
     android:left="1dp" 
     android:right="1dp" 
     android:top="1dp" /> 

    <corners 
     android:bottomLeftRadius="7dp" 
     android:bottomRightRadius="7dp" 
     android:topLeftRadius="7dp" 
     android:topRightRadius="7dp" /> 
</shape> 

我想改变颜色(笔触颜色)编程,我可怎么办呢?

我用这个XML这里:

<LinearLayout 
       android:layout_marginTop="2dp" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/a" 
       android:layout_gravity="center" 
       android:background="@drawable/dummy" 
       android:layout_marginBottom="2sp" 
       android:orientation="horizontal" 
       android:padding="5dp"> 

       <RelativeLayout 
        android:id="@+id/serverStatusWrapper" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_marginLeft="2dp" 
        android:background="@drawable/shadow_green" 
        android:padding="2dp"> 

        <ImageView 
         android:id="@+id/serverStatus" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_centerInParent="true" 
         android:antialias="true" 
         android:src="@drawable/ic_settings_input_antenna_white_24dp" /> 

       </RelativeLayout> 

       <RelativeLayout 
        android:id="@+id/locationStatusWrapper" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:background="@drawable/shadow_red" 
        android:padding="2dp"> 

        <ImageView 
         android:id="@+id/locationStatus" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_centerInParent="true" 
         android:antialias="true" 
         android:src="@drawable/ic_warning_white_24dp" /> 
       </RelativeLayout> 

      </LinearLayout> 
+0

您需要动态地创建绘制我有尝试这一点,但不是为我工作 –

回答

3
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.a); 

可以更改行程作为

GradientDrawable drawable = (GradientDrawable)linearLayout.getBackground(); 
drawable.setStroke(3, Color.RED); 

而且可以改变固体颜色

GradientDrawable drawable = (GradientDrawable)linearLayout.getBackground(); 
drawable.setColor(Color.RED); 

希望这有助于

+0

好吧,但这个XML我的LinearLayout –

+0

使用然后改变ImageView的到的LinearLayout –

+0

我尝试这样做,但我有空指针:GradientDrawable drawable =(GradientDrawable)linearLayout.getBackground(); –