首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在宽度设置为"fill parent“的android按钮中居中图标和文本

如何在宽度设置为"fill parent“的android按钮中居中图标和文本
EN

Stack Overflow用户
提问于 2010-09-03 16:43:29
回答 22查看 188.4K关注 0票数 137

我想有一个以icon+text为中心的安卓按钮。我使用drawableLeft属性来设置图像,如果按钮的宽度为"wrap_content",效果会很好,但我需要拉伸到最大宽度,所以我使用了宽度"fill_parent"。这会将我的图标直接移动到按钮的左侧,并且我希望图标和文本都在按钮内部居中。

我已经尝试设置填充,但这只允许给出一个固定值,所以它不是我需要的。我需要让icon+text居中对齐。

代码语言:javascript
复制
<Button 
    android:id="@+id/startTelemoteButton" 
    android:text="@string/start_telemote"
    android:drawableLeft="@drawable/start"
    android:paddingLeft="20dip"
    android:paddingRight="20dip"            
    android:width="fill_parent"
    android:heigh="wrap_content" />

对如何实现这一点有什么建议吗?

EN

回答 22

Stack Overflow用户

发布于 2011-12-05 22:06:51

android:drawableLeft总是保持android:paddingLeft与左边框的距离。当该按钮未设置为android:width="wrap_content“时,它将始终挂在左侧!

在Android4.0(API14级)中,您可以使用android:drawableStart属性在文本的开头放置一个可绘制的内容。我想出的唯一向后兼容的解决方案是使用ImageSpan创建Text+Image Spannable:

代码语言:javascript
复制
Button button = (Button) findViewById(R.id.button);
Spannable buttonLabel = new SpannableString(" Button Text");
buttonLabel.setSpan(new ImageSpan(getApplicationContext(), R.drawable.icon,      
    ImageSpan.ALIGN_BOTTOM), 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
button.setText(buttonLabel);

在我的例子中,我还需要调整Button的android:gravity属性,使其看起来居中:

代码语言:javascript
复制
<Button
  android:id="@+id/button"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:minHeight="32dp"
  android:minWidth="150dp"
  android:gravity="center_horizontal|top" />
票数 76
EN

Stack Overflow用户

发布于 2014-10-14 18:20:31

我知道我在回答这个问题时来晚了,但这对我有帮助:

代码语言:javascript
复制
<FrameLayout
            android:layout_width="match_parent"
            android:layout_height="35dp"
            android:layout_marginBottom="5dp"
            android:layout_marginTop="10dp"
            android:background="@color/fb" >

            <Button
                android:id="@+id/fbLogin"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_gravity="center"
                android:background="@null"
                android:drawableLeft="@drawable/ic_facebook"
                android:gravity="center"
                android:minHeight="0dp"
                android:minWidth="0dp"
                android:text="FACEBOOK"
                android:textColor="@android:color/white" />
        </FrameLayout>

我从这里找到了这个解决方案:Android UI struggles: making a button with centered text and icon

票数 37
EN

Stack Overflow用户

发布于 2016-07-26 19:04:48

我通过添加左右填充来调整它,如下所示:

代码语言:javascript
复制
<Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:id="@+id/btn_facebookact_like"
            android:text="@string/btn_facebookact_like"
            android:textColor="@color/black"
            android:textAllCaps="false"
            android:background="@color/white"
            android:drawableStart="@drawable/like"
            android:drawableLeft="@drawable/like"
            android:gravity="center"
            android:layout_gravity="center"
            android:paddingLeft="40dp"
            android:paddingRight="40dp"
            />
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3634191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档