Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to set android:id in programmatically in android?

I want to set the android:id = "@android:id/background" programmatically. I try to adapting drawable xml code to java code programmatically. I wrote other options to code, but couldn't write the android:id = "@android:id/background" to code. here is my code. please let me know the way.

xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:id="@android:id/background">
        <shape android:shape="rectangle">
            <corners android:radius="10dp"/>
            <solid android:color="@color/colorOrange"/>
            <stroke android:color="#fff" android:width="1dp"/>
        </shape>
    </item>
    <item android:id="@android:id/progress">
        <scale
            android:scaleHeight="10%"
            android:scaleWidth="100%" >
            <shape android:shape="rectangle">
                <corners android:radius="10dp"/>
                <solid android:color="@color/colorGreen"/>
                <stroke android:color="@color/colorGreen"
                    android:width="4dp"/>
            </shape>
        </scale>
    </item>
</layer-list>

code

        val layer1 = GradientDrawable()
        layer1.cornerRadius = 10f
        layer1.setStroke(1, Color.WHITE)
        layer1.setColor(Color.YELLOW)

        val scaleDrawable =  GradientDrawable()
        scaleDrawable.cornerRadius = 10f
        scaleDrawable.setStroke(1, Color.WHITE)
        scaleDrawable.setColor(Color.BLUE)
        val layer2 = ScaleDrawable(scaleDrawable, Gravity.BOTTOM,1f,0.1f)
        val drawableList = arrayOf(layer1, layer2)
        val layerList : LayerDrawable = LayerDrawable(drawableList)
        this.progressDrawable = layerList

result screen

enter image description here

like image 854
Charles Avatar asked Apr 20 '26 19:04

Charles


1 Answers

You can use #layerList.setId and set the id by index . Check the code below . I have made few changes in it to match it to xml-drawable .

val layer1 = GradientDrawable()
layer1.cornerRadius = 10f
layer1.setStroke(1, Color.WHITE)
layer1.setColor(Color.YELLOW)

val scaleDrawable =  GradientDrawable()
scaleDrawable.cornerRadius = 10f
scaleDrawable.setStroke(1, Color.WHITE)
scaleDrawable.setColor(Color.BLUE)

val layer2 = ScaleDrawable(scaleDrawable, Gravity.START,1f,0.1f)
val drawableList = arrayOf(layer1, layer2)
val layerList  = LayerDrawable(drawableList)
layerList.setId(0,android.R.id.background)
layerList.setId(1,android.R.id.progress)
seekBar.progressDrawable = layerList
like image 153
ADM Avatar answered Apr 23 '26 09:04

ADM



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!