0

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

<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>

它给了我这样的结果: 在此处输入图像描述

我还在编写一些代码来用一个更好看的栏替换那个栏。如下:

<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>

结果是: 在此处输入图像描述

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

4

2 回答 2

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>
    

让我知道它是否有效!

编辑:

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

<size
      android:height="3dp" />
于 2012-07-10T23:45:21.547 回答
0

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

于 2012-07-10T23:44:01.893 回答