icon
内のアクションのtitle
とActionBar
の両方を表示する必要があります。
「withText
」オプションを試しましたが、効果はありません。
'always | withText'は十分なスペースがある場合は機能しますが、そうでない場合はアイコンのみを配置します。ローテーションで携帯電話でテストできます。
<item Android:id="@id/menu_item"
Android:title="text"
Android:icon="@drawable/drawable_resource_name"
Android:showAsAction="always|withText" />
2つの方法でテキストを使用してアクションを作成できます。
1- XMLから:
<item Android:id="@id/resource_name"
Android:title="text"
Android:icon="@drawable/drawable_resource_name"
Android:showAsAction="withText" />
メニューを拡張するときは、ActionBarSherlock
を使用しているため、getSupportMenuInflater()
を呼び出す必要があります。
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」を使用することでした。多くのメニューがある場合は、「常に」ではなく「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>
これにより、アイコンとテキストが一緒に表示されます。
Clickitemのフラグメントまたはアクティビティを取得するには:
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();
}
});
}
ツールバーにボタンを追加できます
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
app:popupTheme="@style/AppTheme.PopupOverlay"
app:title="title">
<Button
Android:id="@+id/button"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="right"
Android:layout_marginRight="16dp"
Android:background="@color/transparent"
Android:drawableRight="@drawable/ic_your_icon"
Android:drawableTint="@drawable/btn_selector"
Android:text="@string/sort_by_credit"
Android:textColor="@drawable/btn_selector"
/>
</Android.support.v7.widget.Toolbar>
ファイルを作成btn_selector.xml drawable
<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item
Android:state_selected="true"
Android:color="@color/white"
/>
<item
Android:color="@color/white_30_opacity"
/>
Java:
private boolean isSelect = false;
ボタンのOnClickListener:
private void myClick() {
if (!isSelect) {
//**your code**//
isSelect = true;
} else {//**your code**//
isSelect = false;
}
sort.setSelected(isSelect);
}
2017年のany1がこれをプログラムで行う方法を疑問に思っている場合は、答えに表示されない方法があります
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
あなたの何人かは素晴らしい答えを持っていますが、私はいくつかの追加のものを見つけました。 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;
}
最初にメニューバーにTextViewを追加し、setCompoundDrawables()
を使用して、希望する側に画像を配置してみてください。最後にテキストアクティビティにクリックアクティビティを結合します。
MenuItem item = menu.add(Menu.NONE, R.id.menu_item_save, 10, R.string.save);
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS|MenuItem.SHOW_AS_ACTION_WITH_TEXT);
TextView textBtn = getTextButton(btn_title, btn_image);
item.setActionView(textBtn);
textBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// your selector here }
});
ここですべてを文字通りカスタマイズできます:
public TextView getTextButton (String btn_title, Drawable btn_image) {
TextView textBtn = new TextView(this);
textBtn.setText(btn_title);
textBtn.setTextColor(Color.WHITE);
textBtn.setTextSize(18);
textBtn.setTypeface(Typeface.create("sans-serif-light", Typeface.BOLD));
textBtn.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
Drawable img = btn_image;
img.setBounds(0, 0, 30, 30);
textBtn.setCompoundDrawables(null, null, img, null);
// left,top,right,bottom. In this case icon is right to the text
return textBtn;
}