Android 在按钮内设置可拉拔位置

Android 在按钮内设置可拉拔位置,android,android-button,android-drawable,Android,Android Button,Android Drawable,我在文本的左边有一个按钮和一个可绘制的,但是我希望可绘制的更接近文本。所以我需要移动牵引装置 我已经定义了android:drawableLeft,但是按钮的内容没有居中 这是我的密码: <Button android:id="@+id/addsubject" android:layout_width="250dp" android:layout_height="wrap_content" android:drawableLeft="@drawable/ic

我在文本的左边有一个按钮和一个可绘制的,但是我希望可绘制的更接近文本。所以我需要移动牵引装置

我已经定义了android:drawableLeft,但是按钮的内容没有居中

这是我的密码:

<Button
    android:id="@+id/addsubject"
    android:layout_width="250dp"
    android:layout_height="wrap_content"
    android:drawableLeft="@drawable/ic_action_add"
    android:layout_centerHorizontal="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="20dp"
    android:text="@string/addsubject"
    android:textColor="@color/white"
    android:background="@drawable/custombutton1" />

下面是它现在的样子:

下面是我希望的情况:

谢谢大家!

试试这个

 <Button
    android:id="@+id/addsubject"
    android:layout_width="160dip"
    android:layout_height="60dip"
    android:layout_gravity="center"
    android:drawableLeft="@drawable/ic_action_add"
    android:drawablePadding="2dip"
    android:gravity="center"
    android:paddingLeft="30dip"
    android:paddingRight="26dip"
    android:singleLine="true"
    android:text="@string/addsubject"
    android:textSize="13dip" />

按钮左边框和图标右边框之间的填充由
android:paddingLeft
属性控制。图标和文本之间的填充由
android:drawablePadding
属性定义

将这两个属性添加到按钮并设置您满意的值

<Button
    ...
    android:paddingLeft="24dp"
    android:drawablePadding="8dp"
    />

通过添加OnClickListener,您可以使用LinearLayout作为按钮,并根据需要进行自定义

<LinearLayout          
    android:layout_width="160dip"
    android:layout_height="60dip"
    android:orientation="horizontal" 
    android:background="@drawable/custombutton1">

    <ImageView android:layout_height="wrap_content"
               android:layout_width="wrap_content"
               android:src="@drawable/ic_action_add"
               android:layout_gravity="center"
               android:layout_weight="1"
               android:scaleType="center">

    </ImageView>

    <TextView android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="@string/addsubject"
              android:layout_gravity="center"
              android:layout_weight="1"/>

</LinearLayout>

我只需将这些属性放到按钮上,就得到了这个结果

<Button
    ...
    android:paddingLeft="60dp"
    android:drawablePadding="-50dp"
    android:gravity="center"
    android:drawableLeft="@drawable/your_button_icon"
    /> 

您可以使用自己的值调整以获得所需的结果


干杯:-)

我只是简单地使用paddingLeft和paddingRight来完成这项工作。它的作品<代码> ... android:paddingLeft=“25dp”
android:paddingRight=“25dp”/>

在阅读了一段时间并使用了大量XML组合后,您还可以通过编程方式对可绘图/图标进行充气,但仍然不起作用

您可能希望在库下方分叉,以适合您的用例,例如,以编程方式自定义视图、位置等,请参见以下参考:

  • ,见
  • ,见
  • 有关RadioButton,请参见

  • 注意:版权所有,关于作者,对于Materialbutton,您必须使用图标属性,并且您还可以使用图标更改其色调,例如:

    <com.google.android.material.button.MaterialButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:icon="@drawable/ic_cancel"
        app:iconTint="@color/black"
        android:text="text" />
    

    使用
    材料按钮中的
    应用程序:iconGravity=“textStart”
    属性

        <com.google.android.material.button.MaterialButton
            app:icon="@drawable/ic_add_24px"
            app:iconGravity="textStart"
            ../>
    

    尝试将android:gravity=“center”
    添加到您的xml中?请看。这就是我想要的!诀窍是使用drawableLeft和drawableRight并调整它们以适应。非常感谢。它正在工作,但根据设备大小,它不是灵活的。谢谢,它可以工作。但是如果你有android:padding,请删除它。在另一种情况下,图标将位于左侧,文本将居中。结果还取决于按钮的宽度。解决方案不好,因为这样按钮在不同的屏幕大小上会有不同的外观。@definera您能为该视图(按钮)提出一个更好的解决方案,它可以适应不同的屏幕大小吗?@ImtiazAbir也许可以将SpannableString与ImageSpan一起使用。我还没有亲自尝试过,所以我不能给出一个具体的例子。
        <com.google.android.material.button.MaterialButton
            app:icon="@drawable/ic_add_24px"
            app:iconGravity="textStart"
            app:iconPadding="0dp"/>