2

Cancel と Save の 2 つのアイテムを含むアクション バーを表示しようとしていますが、次のようにアクション バーの全長にまたがるように配置したいと考えています。

______________________________
|____Cancel____|____Save ____|
|                            |
|                            |
|                            |
|                            |

したがって、基本的には、2 つのアクション アイテムのみを中央に配置し、アクション バー全体にまたがって表示する方法が必要です。

これを達成する最も簡単な方法は何ですか? カスタムレイアウトの使用を検討していますが、アクションバーとメニューを使用するのはまだ初めてなので、どうすればこれを実行でき、これらを引き続きメニュー アクション アイテムにすることができるかわかりません。

ある種のスタイリングソリューションはありますか?これを達成するための最善かつ最も痛みのない方法は何ですか?

編集

アクション バーとカスタム レイアウトを使用するのはこれが初めてなので、何がうまくいくのか、どうしようもなくばかげたアプローチがうまくいかないのか、まったくわかりません。たとえば、カスタム レイアウトを次のように設定します。

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_gravity="center_horizontal">

    <item android:id="@+id/menu_item_cancel"
            android:showAsAction="always"
            android:title="Cancel"/>

    <item android:id="@+id/menu_item_save"
            android:showAsAction="always"
            android:title="Save" />
</menu>

インフレ例外が発生し、機能しません。経験豊富な他の人はこれが機能しないことをすぐに理解するでしょうが、私はこれから抜け出す方法を感じるか、誰かが私を正しい方向に向けるまで、燃焼時間について混乱したままです. .

だから、私が試したことを尋ねる人のために、私は投稿し続けますが、ほとんど同じことを期待しています.

2回目の試行

ClassNotFoundException の取得: パスにクラス "android.view.menu" が見つかりませんでした

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent" 
        android:layout_height="match_parent"
        android:layout_gravity="center_horizontal">

    <menu android:layout_gravity="center_horizontal">

        <item android:id="@+id/menu_item_cancel"
                android:showAsAction="always"
                android:title="Cancel"/>

        <item android:id="@+id/menu_item_save"
                android:showAsAction="always"
                android:title="Save" />
    </menu>

</LinearLayout>

3回目の試行

これはほとんど機能しますが、各ボタンの上半分しか表示されません。アクションバーには適切に描画するのに十分なスペースがあるように見えますが、下半分が切り取られています.

これらは通常のボタンと仕切りであるため、アクション アイテムのスタイルも失われます。アプリ全体の残りのアクション バーと一緒にスタイルを設定するのが簡単になるので、ネイティブ アクション アイテムを使用するソリューションを見つけたいと思います。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent" 
        android:layout_height="match_parent"
        android:layout_gravity="center_horizontal">

                <Button
                    android:id="@+id/cancel_btn"
                    android:layout_width="0dp"
                    android:layout_height="fill_parent"
                    android:layout_weight="1"
                    android:text="Cancel" />

                <Button
                    android:id="@+id/save_btn"
                    android:layout_width="0dp"
                    android:layout_height="fill_parent"
                    android:layout_weight="1"
                    android:text="Save" />
</LinearLayout>

4回目の試行

これはかなり近いです。私は ActionBarSherlock デモ プロジェクトを調べていて、分割メニュー バーを使用すると、レイアウトが中央に配置される傾向があることに気付きました。そこで、これまで使用していた元のメニューに戻し、showAsAction ifRoom 値を追加しました。

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item android:id="@+id/menu_item_cancel"
            android:showAsAction="ifRoom"
            android:title="Cancel"/>

    <item android:id="@+id/menu_item_save"
            android:showAsAction="ifRoom"
            android:title="Save"/>
</menu>

これもマニフェストのアクティビティに追加しました。

android:uiOptions="splitActionBarWhenNarrow"

これにより、私が望む正確なスタイリングが得られます...しかし、それは分割アクションバーにあります. これを下ではなく上に置きたい。これを Android 2.2 のエミュレーターで実行すると機能しますが、テキストの長さに比例して 2 つのオプションが中央に配置されるように見えるため、キャンセルの領域が保存の領域よりも大きくなります。

誰かがこの正確なスタイリングを取得する方法を知っていても、上部のアクションバーですべてを修正します.

4

1 に答える 1

0

ネイティブ アクション バーのスタイルやオプションでこれを行う方法ではないようです。3 回目の試行と同様に、スタイルと背景を変更してアクション バーを模倣するカスタム ビューを使用する必要がありました。

于 2012-12-22T10:03:19.060 に答える