Android: Kenar boşluğunu radyo düğmesi çekilebilirinin sol tarafına ayarlayın
Ç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
İkinci resminizin gösterdiği şeyde tam olarak aynı şeyi elde etmek istiyorum, RadioButton
bu 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