我应该使用哪种布局?

时间:2012-11-01 07:18:43

标签: android layout

我很困惑。我想显示地图,并在地图下方显示5个按钮。我使用RelativeLayout,但程序只显示Product按钮。为什么?我很困惑我使用的是哪种布局(线性,相对,帧或绝对)!!请帮我。以及如何更正此代码?

location.xml:

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/frame"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<com.google.android.maps.MapView
    android:id="@+id/mapView"
    android:apiKey="0cPRv243zM1_S3ydsNg8MJP9_6BfCp642jOhPvQ"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:clickable="true" />
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/background"
    android:layout_gravity="bottom"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/button_home"
        style="?android:attr/borderlessButtonStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:drawableTop="@drawable/home_icon"
        android:text="@string/button_home"
        android:textColor="@color/text_home" />

     <Button
        android:id="@+id/button_product"
        style="?android:attr/borderlessButtonStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:drawableTop="@drawable/product_icon"
        android:onClick="Product"
        android:text="@string/button_product"
        android:textColor="@color/text_product" />

  </LinearLayout>
  </LinearLayout>

3 个答案:

答案 0 :(得分:1)

要回答您的具体问题:您应该说产品按钮位于主页按钮的右侧,而不是说主页按钮位于产品按钮的左侧。当RelativeLayout膨胀时,布局以线性方式解析,因此如果视图A相对于视图B定位,则视图B必须首先出现。

<Button
    android:id="@+id/button_home"
    style="?android:attr/borderlessButtonStyle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:drawableTop="@drawable/home_icon"
    android:text="@string/button_home"
    android:textColor="@color/text_home"/>

<Button
    android:id="@+id/button_product"
    style="?android:attr/borderlessButtonStyle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@id/button_home"
    android:drawableTop="@drawable/product_icon"
    android:onClick="Product"
    android:text="@string/button_product"
    android:textColor="@color/text_product" />

将其添加到产品按钮并从主页按钮中删除layout_toLeftOf。

    android:layout_toRightOf="@id/button_home"

您可以使用重力和对齐来定位主页按钮,然后让其他四个按钮跟在其后面,每个按钮位于前一个按钮的右侧。

祝你好运

答案 1 :(得分:0)

  • LinearLayout :当我们需要安排时使用LinearLayout 小部件/视图以水平或垂直方式。 排列方向可以设置为水平或垂直, 默认情况下它是水平的。

  • TableLayout :如果需要安排布局的小部件/视图 以行和列的形式,我们使用此布局对象。 这类似于html表。单元格可以跨越列。 TableLayout不显示其边框。我们可以做到 通过设置列的相应属性来缩小和拉伸, “TableRow”是另一个应该结合使用的辅助窗口小部件 使用TableLayout。

  • RelativeLayout :这里每个小部件/视图的位置是 相对/相互依赖。例如,当需要布局时 这样它在编辑文本框的左侧有一个文本视图和一个按钮 就在EditText下面。视图之间的关系得到了关注 一次迭代,因此如果视图B的位置取决于视图A的位置, 视图必须在布局中排在第一位。

  • FrameLayout :这是一个非常简单的布局,用于保存一个部分 屏幕空白,用于在运行时显示项目或项目组。一切 framelayout中添加的元素将添加到屏幕的左上角。

  • AbsoluteLayout :当需要指定精确的x和y坐标时 视图的位置,然后需要使用AbsoluteLayout。这个布局是 难以维持。

答案 2 :(得分:0)

默认情况下,RelativeLayout将这两个按钮放在一起,这样你就可以看到后者。

android:layout_toLeftOf="@+id/button_product"

错了。 @+id创建了一个ID,在这种情况下使用@id

我建议使用LinearLayout。将这些按钮放入其中,然后使用边距进行调整。