如何在按钮的中心设置图像和文本

时间:2011-05-19 09:24:25

标签: android

我已将按钮宽度设置为fill_parent

所以是否可以在按钮的中心设置图像和文本。

drawable_Left有选项,但它会对齐按钮左侧的图像...

我想要这样的东西。


.... [image] [text] .... |


谢谢:

6 个答案:

答案 0 :(得分:2)

尝试此操作:首先为按钮设置背景,然后使用android:drawableTop=""设置图像,然后按android:text=""

设置文字

答案 1 :(得分:0)

在布局中使用android:gravity="center_vertical"

答案 2 :(得分:0)

首先将gravity提供给center,然后使用drawable_Left

答案 3 :(得分:0)

你应该使用相关布局来获取问题的解决方案,使用吹码将它放在你的xml文件中

android:layout_centerHorizontal ="true"

答案 4 :(得分:0)

<Button android:text="Button" android:id="@+id/button1"
    android:layout_height="wrap_content" android:background="@drawable/icon"
    android:layout_width="200dp" android:gravity="center"></Button>

希望它有所帮助;

答案 5 :(得分:0)

这是一个实用程序功能,用于将左图像和文本居中在Button

public static void centerImageAndTextInButton(Button button) {
    Rect textBounds = new Rect();
    //Get text bounds
    CharSequence text = button.getText();
    if (text != null && text.length() > 0) {
        TextPaint textPaint = button.getPaint();
        textPaint.getTextBounds(text.toString(), 0, text.length(), textBounds);
    }
    //Set left drawable bounds
    Drawable leftDrawable = button.getCompoundDrawables()[0];
    if (leftDrawable != null) {
        Rect leftBounds = leftDrawable.copyBounds();
        int width = button.getWidth() - (button.getPaddingLeft() + button.getPaddingRight());
        int leftOffset = (width - (textBounds.width() + leftBounds.width()) - button.getCompoundDrawablePadding()) / 2 - button.getCompoundDrawablePadding();
        leftBounds.offset(leftOffset, 0);
        leftDrawable.setBounds(leftBounds);
    }
}

它使用Button的宽度进行计算,因此您必须检查您是否在正确的位置调用此方法。也就是说,宽度应该不是零。例如,如果您想在onCreate中使用button.getViewTreeObserver().addOnGlobalLayoutListener(...call it onGlobalLayout...)