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>

結果は次のとおりです。 ここに画像の説明を入力

だから私の問題は、新しい黒いバーに 3 つのボタンを取得できないことです。android:layout_toRightOf 属性を使用してビューとボタンを追加しようとしましたが、まだ機能しません。これを達成するために何ができるかについてのアイデアはありますか?

4

2 に答える 2

1

グラデーションを表示するためだけにビューをレイヤーに追加する必要はありません。

これら 3 つのボタンでLinearLayoutを使用し、レイヤー リスト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>
    

    グラデーションが 1 つしかない場合は、レイヤー リスト 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"の目的の項目に追加します。つまり、グラデーションは上から 3 dp の高さになります。または、単一のグラデーション ファイルを使用している場合は、形状に追加する勾配の高さを定義できます。

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

「3 つのボタン」の場合、LinearLayour 属性を設定するandroid:weightSum="3"と、同じサイズの 3 つのボタンが得られます。

于 2012-07-10T23:44:01.893 に答える