三个按钮RelativeLayout与视图分割器

时间:2012-07-10 23:20:23

标签: android xml android-layout android-view android-button

我正在尝试为我的应用创建一个更好看的按钮栏以匹配主题。 到目前为止,我正在使用以下代码:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/footer"
    style="@android:style/ButtonBar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="bottom"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/Formula"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Formula" />

    <Button
        android:id="@+id/Solve"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Solve" />

    <Button
        android:id="@+id/Clear"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Clear" />
</LinearLayout>

它给我一个这样的结果: enter image description here

我还在研究一些代码,用更好看的代替那个代码。它如下:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="48dp"
    android:layout_alignParentBottom="true" >

    <View
        android:layout_width="match_parent"
        android:layout_height="1dip"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="4dip"
        android:layout_marginRight="4dip"
        android:background="@drawable/black_white_gradient" />

    <View
        android:id="@+id/ViewOne"
        android:layout_width="1dip"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="4dip"
        android:layout_marginTop="4dip"
        android:background="@drawable/black_white_gradient" />

    <Button
        android:id="@+id/ButtonOne"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_toLeftOf="@id/ViewOne"
        android:background="@color/button_blue_background"
        android:paddingTop="5dp"
        android:text="Cancel"
        android:textColor="@color/button_dark_text" />

    <Button
        android:id="@+id/ButtonTwo"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@id/ViewOne"
        android:background="@color/button_blue_background"
        android:text="OK"
        android:textColor="@color/button_dark_text" />
</RelativeLayout>

导致: enter image description here

所以我的问题是我无法在新黑条上获得三个按钮。我尝试使用android:layout_toRightOf属性添加更多视图和按钮,但它仍然无法正常工作。 我有什么想法可以做到这一点?

2 个答案:

答案 0 :(得分:1)

您不需要为了显示渐变而向视图中添加视图。

我建议您将 LinearLayout 与这三个按钮一起使用,并将 layer-list xml设置为布局本身的背景。

  1. 使用渐变创建图层列表xml文件,例如 layerlist.xml

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
       <item
         android:drawable="@drawable/gradient1"
         android:id="@+id/grad1"
       />
    
       <item
         android:drawable="@drawable/gradient2"
         android:id="@+id/grad2"
       />
    </layer-list>
    

    如果您只有一个渐变,那么您不需要图层列表xml文件。将其直接设置为 LinearLayout 的背景。

  2. 正如我之前所说,将 layerlist.xml (或您的单个渐变xml文件)设置为布局的背景:

    <LinearLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/footer"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:gravity="bottom"
      android:orientation="horizontal"
      android:background="@drawable/layerlist" >
    
        <Button
          android:id="@+id/Formula"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_weight="1"
          android:text="Formula" />
    
       <Button
          android:id="@+id/Solve"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_weight="1"
          android:text="Solve" />
    
       <Button
          android:id="@+id/Clear"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_weight="1"
          android:text="Clear" />
    </LinearLayout>
    
  3. 让我知道它是否有效!

    修改

    据我所知,您可以为渐变定义合适的高度。将android:top="3dp"添加到 layerlist.xml 文件的所需。这意味着您的渐变将从顶部开始具有3dp的高度。 或者,如果您使用单个渐变文件,则可以定义添加到形状的宽度高度:

    <size
          android:height="3dp" />
    

答案 1 :(得分:0)

对于“三个按钮”的情况,您可以设置LinearLayour属性android:weightSum="3"这应该为您提供三个相同大小的按钮。