内にアクションのicon
との両方を表示する必要があります。title
ActionBar
withText
「 」オプションを試しましたが、効果がありません。
内にアクションのicon
との両方を表示する必要があります。title
ActionBar
withText
「 」オプションを試しましたが、効果がありません。
テキストを使用してアクションを作成するには、次の 2 つの方法があります。
1- XML から:
<item android:id="@id/resource_name"
android:title="text"
android:icon="@drawable/drawable_resource_name"
android:showAsAction="withText" />
メニューを膨らませるときは、getSupportMenuInflater()
を使用しているため呼び出す必要がありますActionBarSherlock
。
2- プログラムによる:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuItem item = menu.add(Menu.NONE, ID, POSITION, TEXT);
item.setIcon(R.drawable.drawable_resource_name);
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_WITH_TEXT);
return true;
}
とを必ずインポートcom.actionbarsherlock.view.Menu
してくださいcom.actionbarsherlock.view.MenuItem
。
私にとってうまくいったのは、「always|withText」を使用することでした。多くのメニューがある場合は、'always' の代わりに 'ifRoom' の使用を検討してください。
<item android:id="@id/resource_name"
android:title="text"
android:icon="@drawable/drawable_resource_name"
android:showAsAction="always|withText" />
私が見つけた解決策は、カスタム アクション レイアウトを使用することです。メニューの XML は次のとおりです。
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:Eventapp="http://schemas.android.com/apk/res-auto">
<!-- This is a comment. -->
<item
android:id="@+id/action_create"
android:actionLayout="@layout/action_view_details_layout"
android:orderInCategory="50"
android:showAsAction = "always"/>
</menu>
レイアウトは
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="5dp"
android:gravity="center"
android:text="@string/create"/>
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:gravity="center"
android:src="@drawable/ic_action_v"/>
</LinearLayout>
これにより、アイコンとテキストが一緒に表示されます。
フラグメントまたはアクティビティのクリック項目を取得するには:
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
{
//super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.menu_details_fragment, menu);
View view = menu.findItem(R.id.action_create).getActionView();
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(), "Clicked", Toast.LENGTH_SHORT).show();
}
});
}
何人かは素晴らしい答えを持っていますが、私は追加のものを見つけました。プログラムで SubMenu を含む MenuItem を作成する場合:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
SubMenu subMenu = menu.addSubMenu(0, Menu.NONE, 0, "Menu title");
subMenu.getItem().setIcon(R.drawable.ic_action_child);
subMenu.getItem().setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
subMenu.add(0, Menu.NONE, 0, "Subitem 1");
subMenu.add(0, Menu.NONE, 1, "Subitem 2");
subMenu.add(0, Menu.NONE, 2, "Subitem 3");
return true;
}
app:showAsAction="always|withText" を使用します。私は Android 4.1.1 を使用していますが、とにかく適用できるはずです。私は以下のように見えます
<item
android:id="@+id/action_sent_current_data"
android:icon="@drawable/ic_upload_cloud"
android:orderInCategory="100"
android:title="@string/action_sent_current_data"
app:showAsAction="always|withText"/>
次の手順を実行します:
final ActionBar
actionBar = getActionBar();
actionBar.setDisplayShowHomeEnabled(false);
android:logo=@drawable/logo and android:label="@string/actionbar_text"
私はこれがあなたを助けると思います