1

我在可绘制文件夹中有一个名为border.xml 的xml 文件。在这个 xml 我有

<!-- +++++++++++++++++++++  BORDER  +++++++++++++++++++ -->
<item> 
    <shape android:shape="rectangle">
        <solid
            android:id="@+id/shape_border_color" 
            android:color="@color/black" /> 
        <gradient 
            android:id="@+id/shapre_border_gradient" 
            android:startColor="@color/BurlyWood" 
            android:endColor="@color/Blue" 
            android:angle="270"
        /> 
<!-- ++++++++++++++++++++ ROUND CORNERS ++++++++++++++++++++++++++++ -->
        <corners
            android:id="@+id/shape_border_corners" 
            android:bottomRightRadius="7dp" 
            android:bottomLeftRadius="7dp" 
            android:topLeftRadius="7dp" 
            android:topRightRadius="7dp"
    /> 
    </shape>
</item>   

<!-- +++++++++++++++++++++++  BACKGROUND ++++++++++++++++++++++++++ -->
<item 
    android:left="5dp" 
    android:right="5dp"  
    android:top="5dp" >  
    <shape android:shape="rectangle"> 
        <gradient 
            android:id="@+id/shape_background" 
            android:id="@+id/hr_design_background_gradient" 
            android:startColor="@color/DarkOrchid" 
            android:endColor="@color/LawnGreen" 
            android:angle="270"/>
    </shape>
</item>    

我使用上面的 xml 文件作为LinearLayoutmain.xml 文件中的背景,使用以下代码

<LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:padding="0dp"
    android:background="@drawable/border_o2">

在我的 Main.java 活动中,我有兴趣更改边框start and end colors以及角的backgroundRadius

例如,如果我使用 TextView,我知道如何更改某个 id 的背景。但我不确定如何更改项目/形状/渐变值。

谢谢

4

1 回答 1

3

一种方法是定义第二个可绘制资源,称为 drawable/alternate_background.xml。在此文件中,您可以对替代颜色、半径值等进行编码。

然后您以编程方式加载备用资源。

linearLayout.setBackgroundResource(R.drawable.alternate_background);

FWIW,这种方法的一个优点是您的视图仍然是外部化的。因此,您可以使用 Eclipse 布局编辑器来预览更改,而不是等到运行时才能看到更改的效果。

于 2013-02-27T01:44:22.833 回答