Android: Kenar boşluğunu radyo düğmesi çekilebilirinin sol tarafına ayarlayın

Jan 10 2021

Çekilebilir radyo düğmesi ile sol tarafı arasında bir kenar boşluğu / dolgu ayarlamak istiyorum, örneğin: Radyobutton çekilebilirim ve ekranın sol tarafı arasında 8dp'lik bir kenar boşluğu ayarlama. Radyo düğmesinin kendisi arasında nasıl bir kenar boşluğu ayarlayacağımı biliyorum, ancak çekilebilir radyo düğmesiyle nasıl yapılacağını bilmiyorum. Ayrıca paddngStart = "YOUR_PADDING" ile çekilebilen radiobuttonun sağ tarafını nasıl ayarlayacağımı da biliyorum.

Mümkün mü?

Burada ne demek istediğimin bir resmi:

Şu anda

İstediğim

DÜZENLE

Yukarıdaki yazılı cevap işe yarıyor. Değeri mizanpaj içinde ayarlamak isteyenler ve programlı olarak değil, bir ciltleme adaptörü yazdım:

@BindingAdapter("setDrawableLeftPadding")
fun setDrawableLeftPadding(view: CustomRadioButton, padding: Float) {
    view.setStartPaddingDp(padding)
}

Daha sonra bunu CustomRadioButton düzeninizde şu şekilde kullanabilirsiniz: app:setDrawableLeftPadding="@{8f}"

Yanıtlar

1 mhdwajeeh.95 Jan 10 2021 at 23:20

İkinci resminizin gösterdiği şeyde tam olarak aynı şeyi elde etmek istiyorum, RadioButtonbu dolguyu işleyen bir özel yazabilirsiniz , özel görünüm kodu şöyle olabilir (Kotlin'de) :

import android.content.Context
import android.graphics.Canvas
import android.util.AttributeSet
import androidx.appcompat.widget.AppCompatRadioButton

class CustomRadioButton : AppCompatRadioButton {

    // the value of your padding (in pixels) from the start of the radio button
    var startPadding: Int = 0
        get
        set(value) {
            field = value
            requestLayout()
        }

    constructor(context: Context?) : super(context)
    constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs)
    constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(
        context,
        attrs,
        defStyleAttr
    )


    fun setStartPaddingDp(paddingDp: Float) {
        startPaddingPx = (paddingDp * context.resources.displayMetrics.density).toInt()
    }


    override fun onDraw(canvas: Canvas?) {
        // todo: handle Right-To-Left layouts
        canvas?.translate(startPadding.toFloat(), 0f)

        super.onDraw(canvas)
    }

    override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec)

        setMeasuredDimension(measuredWidth + startPadding, measuredHeight)
    }
}

Alanın değerini ayarlayarak dolgu değerini ayarlayabilirsiniz, startPaddingörneğin:

yourCustomRadioButton.startPadding = 100 // this value is in pixels

// or

yourCustomRadioButton.setStartPaddingDp(100) // this value is in DP