Android初学者:布局按钮和文本

时间:2012-04-28 15:59:45

标签: java android xml eclipse android-layout

我正在尝试创建一个应用程序,其中有一排按钮,然后直接在按钮的中心下方显示文本。到目前为止,这就是我所拥有的:

<FrameLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/blue"/>

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/red" android:layout_gravity="center"/>

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/green" android:layout_gravity="right"/>

</FrameLayout>

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="2.5dip"                       
        android:layout_marginLeft="7.5dip"
        android:text="@string/button1"
        android:gravity="center" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="2.5dip"
        android:text="@string/button2" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true" 
        android:layout_marginTop="2.5dip"           
        android:layout_marginRight="5dip"
        android:text="@string/button3" />

</RelativeLayout>

但文本没有排列在按钮的中心下方。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:0)

首先,在FrameLayout中使用多个子节点永远不会很好。如果可以,您应该使用LinearLayout。如果您希望按钮的填充方式与屏幕宽度的三分之一相同,则可以使用

<LinearLayout 
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:weightsum="3" >

     <Button
       android:id="@+id/button1"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:background="@drawable/blue"
       android:weight="1"/>

     <Button
       android:id="@+id/button2"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:background="@drawable/red"
       android:weight="1"/>

     <Button
       android:id="@+id/button3"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:background="@drawable/green"
       android:weight="1"/>
</LinearLayout>

然后对于TextViews,您可以再次使用LinearLayout,但更改方向;

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:orientation="vertical" >

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="2.5dip"                       
    android:layout_marginLeft="7.5dip"
    android:text="@string/button1"
    android:layout_gravity="center" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_marginTop="2.5dip"
    android:text="@string/button2"
    android:layout_gravity="center" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true" 
    android:layout_marginTop="2.5dip"           
    android:layout_marginRight="5dip"
    android:text="@string/button3"
    android:layout_gravity="center" />

</LinearLayout>

如果我没错,这可能会解决你的问题。

答案 1 :(得分:0)

如果您正在使用Eclipse,则可以转到布局.xml的图形视图,右键单击要居中的视图,转到“布局垂直”或“水平”,然后单击“重力” - >中央。

答案 2 :(得分:0)

Drew,您应该能够将它们与2个属性居中对齐:重力和布局重力。 仅使用一个重心中心属性并不是每次都有效,但通过使用这两个属性,它应该像你一样对我来说就像魅力一样。

android:gravity="center" android:layout_gravity="center"