Android TextView文字无法居中

12

我正在尝试创建一个PIN输入界面,但有一个小问题困扰着我。我无法使文本居中显示在此处截图顶部的TextView中:

Pin Screenshot

它的工作方式是,当用户输入PIN码时,我会在每个TextView中放置一个星号以进行可视反馈。问题是,我希望星号居中显示。我尝试了layout_gravity="center",但没有起作用。以下是我当前的布局:

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="match_parent"
   android:layout_height="match_parent">
     <TextView 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:layout_height="wrap_content" 
     android:id="@+id/textView1" 
     android:text="PIN Required" 
     android:layout_width="wrap_content" 
     android:layout_gravity="center_horizontal" 
     android:layout_marginBottom="12sp"
     ></TextView>
     <LinearLayout 
     android:layout_width="match_parent" 
     android:id="@+id/linearLayout1" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="12sp" 
     android:layout_gravity="center_horizontal"
     >
         <TextView 
       android:id="@+id/text1" 
       android:layout_height="32sp" 
       android:layout_width="48sp" 
       android:layout_weight="1" 
       android:layout_marginRight="2sp" 
       android:layout_marginLeft="48sp" 
       android:background="#FFFFFF" 
       android:text="X" 
       android:layout_gravity="center"
       ></TextView>
         <TextView 
       android:id="@+id/text2" 
       android:layout_height="32sp" 
       android:layout_width="48sp" 
       android:layout_weight="1" 
       android:layout_marginRight="2sp" 
       android:layout_marginLeft="2sp" 
       android:background="#FFFFFF"
       ></TextView>
         <TextView 
       android:id="@+id/text3" 
       android:layout_height="32sp" 
       android:layout_width="48sp" 
       android:layout_weight="1" 
       android:layout_marginRight="2sp" 
       android:layout_marginLeft="2sp" 
       android:background="#FFFFFF"
       ></TextView>
         <TextView 
       android:id="@+id/text4" 
       android:layout_height="32sp" 
       android:layout_width="48sp" 
       android:layout_weight="1" 
       android:layout_marginRight="48sp" 
       android:layout_marginLeft="2sp" 
       android:background="#FFFFFF"
       ></TextView>
     </LinearLayout>
     <LinearLayout 
     android:layout_width="match_parent" 
     android:id="@+id/linearLayout2" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="12sp"
     >
         <Button 
       android:text="1" 
       android:textColor="#FFFFFF" 
       android:id="@+id/button1" 
       android:layout_height="32sp" 
       android:layout_width="64sp" 
       android:layout_weight="1" 
       android:editable="false" 
       android:layout_marginRight="2sp" 
       android:layout_marginLeft="48sp" 
       android:background="@drawable/action_background_gradient" 
       android:onClick="ButtonClicked"
       ></Button>
         <Button 
       android:text="2" 
       android:textColor="#FFFFFF" 
       android:id="@+id/button2" 
       android:layout_height="32sp" 
       android:layout_width="64sp" 
       android:layout_weight="1" 
       android:editable="false" 
       android:layout_marginRight="2sp" 
       android:layout_marginLeft="2sp" 
       android:background="@drawable/action_background_gradient" 
       android:onClick="ButtonClicked"
       ></Button>
         <Button 
       android:text="3" 
       android:textColor="#FFFFFF" 
       android:id="@+id/button3" 
       android:layout_height="32sp" 
       android:layout_width="64sp" 
       android:layout_weight="1" 
       android:editable="false" 
       android:layout_marginRight="48sp" 
       android:layout_marginLeft="2sp" 
       android:background="@drawable/action_background_gradient" 
       android:onClick="ButtonClicked"
       ></Button>
     </LinearLayout>

     <!--... and so on for the rest of the buttons ... -->
 </LinearLayout>

我在第一个TextView中加入了 android:text="X",只是为了确认它是否工作正常。当我完成布局调整后,它将会被移除。
我错过了什么简单的东西吗?

5个回答

44

使用android:gravity="center"

尽管我在您的代码中未看到任何 EditText 元素。您确定您发布了正确的代码吗?


1
那是因为我很蠢,我本来想说TextView。一边处理两件事情。但是我确实把gravity="center"写在那里,但它没有起作用。 - MrGibbage
8
啊!我使用了layout_gravity而不是gravity。唉...谢谢! - MrGibbage
谢谢,这对我很有帮助。 - Lucifer
2
啊!我会犯这个错误多少次啊!!我应该在我的额头上纹上layout_^H^H^H^H^H^H^Hgravity。 - Synesso

15
<TextView 
   android:id="@+id/text1" 
   android:layout_height="32sp" 
   android:layout_width="48sp" 
   android:layout_weight="1" 
   android:layout_marginRight="2sp" 
   android:layout_marginLeft="48sp" 
   android:background="#FFFFFF" 
   android:text="X" 
   android:layout_gravity="center"
   android:gravity="center"
/>

android:layout_gravity="center"与此视图在其父级中的位置有关。 android:gravity="center"与此视图内容的位置有关。


对于我的特定活动,仅将android:gravity设置为center并不能解决问题,我还需要将android:layout_gravity设置为center +1。 - Tim Biegeleisen

1

在文本视图中,使用android:gravity="center_horizontal"代替android:layout_gravity


0

要将文本居中,应在TextView上使用android:gravity,而不是layout_gravity:

<TextView 
   android:id="@+id/text1" 
   android:layout_height="32sp" 
   android:layout_width="48sp" 
   android:layout_weight="1" 
   android:layout_marginRight="2sp" 
   android:layout_marginLeft="48sp" 
   android:background="#FFFFFF" 
   android:text="X" 
   android:gravity="center" />

0

当然,这也可以通过编程来完成:

textView.setGravity(Gravity.CENTER);

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