2つのボタンを伸ばしたアクションバーを簡単に実装する方法を知っている人はいますか?
Googleカレンダーアプリの例を次に示します。
ありがとうございました!
2つのボタンを伸ばしたアクションバーを簡単に実装する方法を知っている人はいますか?
Googleカレンダーアプリの例を次に示します。
ありがとうございました!
何らかの理由でこれをアクションバーに含める場合、これを実現する1つの方法は、アクションバーのカスタムビューを使用することです。カスタムビューのレイアウト内で、ボタンの幅の設定について心配します。
アクションバーにカスタムビューを使用するようにアクティビティに指示します。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ActionBar ab = getActionBar();
ab.setDisplayShowHomeEnabled(false);
ab.setDisplayShowTitleEnabled(false);
final LayoutInflater inflater = (LayoutInflater)getSystemService("layout_inflater");
View view = inflater.inflate(R.layout.action_bar_edit_mode,null);
ab.setCustomView(view);
ab.setDisplayShowCustomEnabled(true);
}
layout / action_bar_edit_mode.xmlは、次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="fill_horizontal"
android:orientation="horizontal" >
<LinearLayout
android:layout_alignParentLeft="true"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<Button
android:id="@+id/action_bar_button_cancel"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="Cancel" />
<Button
android:id="@+id/action_bar_button_ok"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="Ok" />
</LinearLayout>
</RelativeLayout>
それが誰かを助けることを願っています!
注:私はここで醜いネストレイアウトを認識しており、通常はこれをお勧めしませんが、何らかの理由で、アクションバー自体のレイアウトは、LinearLayoutがそれ自体で幅全体を占めるようにすることを拒否します。通常、このように不必要にレイアウトをネストすることは避けてください。おそらく誰かがこれを見た場合、彼らは私たちにもっと良い解決策を指摘することができますか?
それはどのようなものか:
編集: Roman Nurikによる素晴らしい投稿があり、彼はこれを非常にうまく行う方法を説明しています。
編集2:誰かが興味を持っている場合、上記のようにレイアウトをネストする必要なしにアクションバーの幅を拡大するようにボタンをレイアウトする正しい方法は、次のことを可能にする適切なレイアウトパラメータでカスタムビューを設定することです親グループに一致するそのコンポーネント。
基本的に:
actionBar.setCustomView(view,new ActionBar.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
私はこれを行う2つの方法を知っていますが、1つはトップに留まりません。
これが1番目です:
メソッドonCreateOptionsMenuをオーバーライドする必要がありますが、これはActionBarに追加されます。これを行うには、API 11が必要です。画面を回転すると、このボタンがActionBarに表示されます。これは、画面サイズによって異なります。
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
{
MenuItem add = menu.add(Menu.NONE, ADD_TIME, 0, R.string.add_time);
add.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
MenuItem qkAdd = menu.add(Menu.NONE, QUICK_ADD_TIME, 1, R.string.quick_add_time);
qkAdd.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
}
そしてこれは結果です:
フラグメントを使用している場合は、 setHasOptionsMenuをtrueに設定する必要があります。そうしないと、メニューが表示されません。
これが2番目です:
cancel_done.xml
<?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:background="@color/color_bar"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:dividerPadding="12dp"
android:orientation="vertical"
android:showDividers="end" >
<Button
android:id="@+id/button1"
style="@drawable/btn_cab_done_holo_light"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:background="@drawable/btn_cab_done_holo_light"
android:text="CANCEL"
android:textSize="14sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:dividerPadding="12dp"
android:orientation="vertical"
android:showDividers="beginning" >
<Button
android:id="@+id/button2"
style="@drawable/btn_cab_done_holo_light"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:background="@drawable/btn_cab_done_holo_light"
android:text="DONE"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>
リソーススタイルbtn_cab_done_holo_light.xmlは、.. \ sdk \ platform \ android-%% \ data \ res \ drawableにあり、レイアウトに追加するだけです。
<include
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_gravity="fill"
layout="@layout/cancel_done" />
そしてこれは結果です:
最善の方法かどうかはわかりませんが、機能しています。
2つのボタンで水平LinearLayoutを作成します。次に、それぞれの幅をmatch_parent
とに設定しandroid:layout_weight="0.5"
ます(各ボタンはスペースの50%を占めます)。
編集:
ActionBar
背景として適用するには:
(ActionBarSherlock) getSupportActionBar().setCustomView(R.layout.my_view);
(ActionBar) getActionBar().setCustomView(R.layout.my_view);
ActionBarのactionModeを使用して、DoneアクションとCancelアクションを実装できます。
http://developer.android.com/guide/topics/ui/menus.html#CABを参照してください
アンドロイドでは完了バーと呼ばれます。これを見てくださいそれは役に立ちますlhttps ://github.com/googlesamples/android-DoneBar