在Android中将按钮内的文本左对齐

68

我想将按钮的文本左对齐,但我不知道如何在xml文件中实现。请告诉我怎么做。我没有找到相关属性。


请重新表达您的问题 :) 它非常不清楚。 - Mohsin Naeem
11
告诉别人去谷歌某件事,而这件事A)在API文档中缺失且B)不明显,同时还是C)由于Google重叠的API调用相互干扰而造成的问题…这种做法是无助的。 - Adam
8个回答

157

也许这会对你有所帮助:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/button1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="left|center_vertical"
        android:text="Button" />

</LinearLayout>

1
我漏掉了 |center_vertical 这一部分,谢谢 @M-Mohsin-Naeem - Carl Anderson
2
应该考虑使用android:gravity="start|center_vertical"而不是left。 - Kæmpe Klunker
center_vertical 可以自动将文本垂直居中对齐,但我需要将文本右对齐,因此使用 center_vertical|right 可以满足我的需求。我并不知道可以使用管道符来实现,非常感谢! - Exel Gamboa
这并没有回答原始问题。你正在移动按钮,而不是对齐按钮内部的文本标签。 - Alex V.

51

你可能想要两个都拥有

    android:gravity="left|center_vertical"

然后再留出一点空间

    android:paddingLeft="5dp"

为了避免文字与按钮左侧边缘重叠,请根据您的按钮样式适当调整 padding_left 的数量。


1
你的意思是: android:gravity="left|center_vertical" android:paddingLeft="10dp" - ddiego
那我就这么做了!谢谢,问题已解决。 - benkc

28

android:gravity="left"

希望这可以帮到您。


2
谢谢,但这并没有起到移动按钮文本中心的作用。我所做的是android:paddingRight=" dp",就这样。 - user1497577
我不太明白你的意思,能否再解释一下? - Sieryuu
他的意思很明确。按钮上的文本应该左对齐在按钮内部。下次在推荐谷歌之前先读一下问题。 - Mr. Developerdude
1
是的,我的代码有什么问题吗?gravity用于将文本对齐到按钮内部,layout_gravity用于将按钮对齐到父容器。 - Sieryuu
@user1497577,请将其放置在'<button />'元素内。 - David Dimalanta

6
android:gravity="left|center_vertical"

这会起作用,但是现在你可能需要根据需求添加一些左边距。

        android:paddingLeft="10dp"

2
您可能需要同时使用android:gravityandroid:layout_gravity来将文本对齐到“左侧”。

2

这是我用过的一种组合,左边是图标,右边是文本,文本左对齐并带有一些填充。

<Button
    android:id="@+id/butt_labs"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:drawableLeft="@drawable/dt_labjob"
    android:paddingLeft="10dip"
    android:gravity="left|center_vertical"
    android:text="@string/l_labs" />

1
正如其他人提到的那样,"left|center_vertical"是有效的,但我发现如果没有明确指定左对齐或右对齐,大多数属性都会默认为左对齐。因此,只需放置以下内容即可使文本左对齐并垂直居中:
android:gravity="center_vertical"

0
如果您需要支持多种不同的语言,最好使用startend来定位文本。这样,在从右到左(RTL)的语言中,它仍然可以正常工作。 示例:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/button1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="start|center_vertical"
        android:text="Button" />

</LinearLayout>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接