0

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

位置.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>
4

3 回答 3

1

回答您的具体问题:与其说主页按钮在产品按钮的左侧,不如说产品按钮在主页按钮的右侧。当相对布局膨胀时,布局以线性方式解析,因此如果视图 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"

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

祝你好运

于 2012-11-01T07:29:31.503 回答
0
  • LinearLayout:当我们需要以水平或垂直方式排列小部件/视图时使用LinearLayout。排列方向可以设置为水平或垂直,默认为水平。

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

  • RelativeLayout:这里每个小部件/视图的位置都是相对/相互依赖的。例如,当需要一个布局时,它在 Edit Textbox 的左侧有一个文本视图,在 EditText 的正下方有一个按钮。视图之间的关系在一次迭代中得到处理,因此如果视图 B 的位置取决于视图 A 的位置,则视图 A 必须在布局中排在第一位。

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

  • AbsoluteLayout:当需要指定视图的确切 x 和 y 坐标位置时,需要使用 AbsoluteLayout。这种布局很难维护。

于 2012-11-01T07:20:32.080 回答
0

默认情况下,RelativeLayout 将这 2 个按钮放在一起,因此您只能看到后者。

和线

android:layout_toLeftOf="@+id/button_product"

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

对于这种情况,我会推荐 LinearLayout。将这些按钮放在其中,并用一些边距调整它们。

于 2012-11-01T07:25:05.803 回答