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の背景を変更する方法を知っています。しかし、Item / Shape/Gradiantの値を変更する方法がわかりません。

ありがとう

4

1 に答える 1

3

1 つのアプローチは、drawable/alternate_background.xml と呼ばれる 2 番目のドローアブル リソースを定義することです。このファイルでは、代替色、半径値などをコーディングできます。

次に、代替リソースをプログラムでロードします。

linearLayout.setBackgroundResource(R.drawable.alternate_background);

FWIW、このアプローチの利点の 1 つは、ビューがまだ外部化されていることです。したがって、Eclipse レイアウト エディターを使用して、実行時に変更の効果を確認するのではなく、変更をプレビューできます。

于 2013-02-27T01:44:22.833 に答える