Ich erstelle einige benutzerdefinierte Komponenten und ich hätte gerne eine Standard-Padding-Set, aber auch in der Lage, es über XML zu konfigurieren, wenn dies gewünscht wird.Poser programmgesteuert setzen und durch xml
Zum Beispiel:
Einfache benutzerdefinierte Textview-Komponente mit Standard-padding:
class MyComponent @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyle: Int = 0) : TextView(context, attrs, defStyle) {
init {
layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)
val verticalPadding = resources.getDimension(R.dimen.FourDp).toInt()
val horizontalPadding = resources.getDimension(R.dimen.FourDp).toInt()
setPadding(horizontalPadding, verticalPadding, horizontalPadding, verticalPadding)
}
}
Diese Komponente würde dann in die App als fallen gelassen werden:
<com.example.components.MyComponent
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="padding test"
<!-- setting padding is optional -->
android:paddingTop="32dp"/>
Die Frage
Android ignoriert derzeit die 32dp-Füllung, die durch xml gesetzt wurde, und geht mit den vier dp der Auffüllung, die in der init
-Methode der Komponente ist. Gibt es eine Möglichkeit, dass ich Android dazu bringen kann, das in xml festgelegte Padding zu verwenden, wenn es existiert, und das Standard-Padding zu verwenden, wenn in xml kein solches Padding angegeben ist?