我希望文字以Button
为中心。但每当我向android:drawableLeft
添加Button
xml属性时,它都会偏移文本。我该如何解决这个问题?
我设法修复它的唯一方法是在android:drawablePadding
中设置一个负数:
但我正在寻找一种更清洁的解决方案来实现它。
答案 0 :(得分:1)
所以我最终选择了较小的邪恶,并将可绘制和文本放在RelativeLayout
内:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/Button.ButtonGray"
android:id="@+id/share_button">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/btn_share"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@android:color/black"
android:textStyle="bold"
android:layout_centerInParent="true"
style="@style/TextNormalWeight"
android:text="@string/post_share"/>
</RelativeLayout>
RelativeLayout
然后接收点击事件并采取行动,看起来像一个按钮。
答案 1 :(得分:0)
不幸的是,这是Button
行为,我同意你的看法,负面填充是一种肮脏的黑客,所以我建议另外两个黑客对我来说听起来有点不那么脏,因为他们依赖预期的行为(负填充虽然有效,但不是设计):
android:paddingRight
设置为drawables的大小答案 2 :(得分:0)
机器人:重力= “center_vertical”
答案 3 :(得分:0)
不幸的是,没有干净的方法可以做到这一点。一种相当直接的方法是在按钮的另一侧设置一个相等大小的透明ColorDrawable。
val drawableSize = button.height // adjust this as desired of course
realDrawable.setBounds(0, 0, drawableSize, drawableSize)
val emptyDrawable = ColorDrawable(Color.TRANSPARENT).apply {
setBounds(0, 0, drawableSize, drawableSize)
}
button.setCompoundDrawables(realDrawable, null, emptyDrawable, null)
答案 4 :(得分:-1)
适用于:
android:gravity="center"