【问题标题】:A button with an image/text centered in background背景居中的带有图像/文本的按钮
【发布时间】:2018-10-29 08:27:34
【问题描述】:

对于我的问题,我已经看到了很多可能的答案,但没有一个对我有用。 我的目标是有一个带有图像、一些文本和背景的圆形按钮。图片和文字应该在背景中居中。

我使用以下作为背景:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:dither="true"
    android:shape="rectangle">

    <corners android:radius="120sp" />

    <solid android:color="#FF5F00" />

    <size
        android:width="120sp"
        android:height="36sp" />

</shape>

图片如下:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24sp"
    android:height="24sp"
    android:viewportWidth="24"
    android:viewportHeight="24">
  <path
      android:pathData="M5,12L19,12"
      android:strokeLineJoin="round"
      android:strokeWidth="2"
      android:fillColor="#00000000"
      android:strokeColor="#FFFFFF"
      android:strokeLineCap="round"/>
  <path
      android:pathData="M12,5L12,19"
      android:strokeLineJoin="round"
      android:strokeWidth="2"
      android:fillColor="#00000000"
      android:strokeColor="#FFFFFF"
      android:strokeLineCap="round"/>
</vector>

最后是按钮:

    <Button android:layout_columnSpan="6" 
android:layout_gravity="center" android:drawableStart="@drawable/ic_plus_24px" 
android:text="Evaluer" 
android:id="@+id/doEvalQOL" android:background="@drawable/roundedyakabutton" android:textColor="#FFFFFF" 
android:gravity="center" 
android:textSize="12sp" 
fontPath="fonts/Ubuntu-Medium.ttf" />

这给了我这个:

删除背景后,图像和文本将按照我希望的方式放置在背景中:

我在这里缺少什么? 提前致谢。

【问题讨论】:

  • 您的预期输出是什么?你有截图吗?
  • 我遇到了同样的问题,请参阅下面的答案。

标签: android android-layout


【解决方案1】:

您可以使用 drawablePadding、paddingLeft 和 paddingRight 在按钮中心对齐文本及其图标。我使用了下面的代码,结果附在屏幕截图中。尝试一次,希望对您有所帮助。

    <Button
    android:id="@+id/doEvalQOL"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:background="@drawable/roundedyakabutton"
    android:drawableLeft="@drawable/ic_plus_24px"
    android:text="Evaluer"
    android:drawablePadding="2dip"
    android:gravity="center"
    android:paddingLeft="30dip"
    android:paddingRight="26dip"
    android:singleLine="true"
    android:textColor="#FFFFFF"
    android:textSize="12sp"
     />

【讨论】:

  • 不是现在...您确定您没有修改我提供的代码中的其他内容吗?结果对我来说是文本和图标都不可见。
  • 对不起,它不起作用。我只看到橙色按钮。没有图标。没有文字。
  • 同样的结果,抱歉。
  • 当心针对多种屏幕尺寸的硬编码填充。
  • 您可以使用 com.intuit.sdp:sdp-android:1.0.6 来避免硬编码多个屏幕的填充大小。
【解决方案2】:

问题

您不能在 Button/TextView 中设置 gravitydrawableLeft。在这里,您将重力设置为按钮,使文本居中但图像保持在左侧。

解决方案

  • drawableLeft 使用负边距android:drawablePadding="-20sp"
  • 或者不要使用 ImageView 和 Button 包装父视图(带背景)而不是 Button。

【讨论】:

  • 第一个建议的解决方案没有解决问题 我不明白你的第二个建议的解决方案。请详细说明
  • 你需要根据自己的需要调整android:drawablePadding
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-13
  • 2019-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多