Android - 按钮文本中心引力不起作用

时间:2014-04-04 12:53:04

标签: android android-layout button textview android-button

我的App中有这个XML布局(一个按钮的例子):

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/scrollViewMain"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffff" >

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#fff0e8" >

    ///some views       

    <Button
        android:id="@+id/btnVysledkySportka"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/chckSprotka"
        android:layout_alignRight="@+id/chckSprotka"
        android:layout_alignTop="@+id/chckSprotka"
        android:layout_margin="3dp"
        android:layout_toRightOf="@+id/textView3"
        android:background="#ffe118"
        android:gravity="center"
        android:onClick="vysledkySportka"
        android:text="Archiv výsledků"
        android:textStyle="bold" />

 ///some views    
</RelativeLayout>

</ScrollView>

但是当我在Android 4.3上启动我的应用程序时,按钮文本不在按钮的中心。查看屏幕截图(红色矩形):

enter image description here

哪里有问题?

修改

Whole layout

2 个答案:

答案 0 :(得分:1)

指定时:

    android:layout_alignBottom="@+id/chckSprotka"
    android:layout_alignRight="@+id/chckSprotka"
    android:layout_alignTop="@+id/chckSprotka"  

它确实使按钮的底部/右侧/顶部边缘与给定锚点视图ID&amp;的底部边缘匹配。容纳底部/右侧/上边距, ,同时android_gravity不考虑合成高度/宽度。

gravity的{​​{1}}根据text centerwrap_content的{​​{1}} layout_height

您可以通过设置layout_widthlayout_height的值(例如,200dp和100dp来尝试)验证这一点,然后您将获得layout_width重力text,但对于那个高度和宽度。

要确认相同,您可以为center使用容器LinearLayout,如:

Button

<LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/chckStastnych" android:layout_alignRight="@+id/chckStastnych" android:layout_alignTop="@+id/chckStastnych" android:layout_margin="3dp" android:layout_toRightOf="@+id/textView3" android:background="#ffe118" > <Button android:id="@+id/btnVysledkyStastnych" android:layout_gravity="center" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#ffe118" android:gravity="center" android:onClick="vysledkyStastnych" android:text="Archiv výsledků" android:textStyle="bold" /> </LinearLayout> 的{​​{1}}设为gravity然后将LinearLayout设置为center或如上所示,使用center作为按钮父亲Button中的layout_gravity 当你对所有4个按钮执行此操作时,这将作为一个解决方案,但是如果重构xml并避免这种嵌套,可能会有更好的选择。

答案 1 :(得分:-1)

试试这个:

<Button
            android:id="@+id/btnVysledkySportka"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/chckSprotka"
            android:layout_alignRight="@+id/chckSprotka"
            android:layout_alignTop="@+id/chckSprotka"
            android:layout_margin="3dp"
            android:layout_toRightOf="@+id/textView3"
            android:background="#ffe118"
            android:gravity="center_vertical"
            android:onClick="vysledkySportka"
            android:text="Archiv výsledků"
            android:textStyle="bold" />