我想要这样的弹出菜单
点击按钮后显示它
XML
<item
android:state_pressed="true"
android:id="@+id/fromFirstMonth"
android:title="از ابتدای سال"
android:drawable="@drawable/nav_item_background"/>
<item
android:state_pressed="true"
android:id="@+id/currentMonth"
android:title="این ماه"
android:drawable="@color/blueMenu"/>
<item
xmlns:showAsAction="always"
android:id="@+id/currentSession"
android:title="این فصل"
android:drawable="@color/white"/>
<item
xmlns:showAsAction="always"
android:id="@+id/selection"
android:title="تانتخابی"
android:drawable="@color/blueMenu"/>
</menu>
爪哇
hourglass.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Creating the instance of PopupMenu
PopupMenu popup = new PopupMenu(Products.this, hourglass);
//Inflating the Popup using xml file
popup.getMenuInflater().inflate(R.menu.hourglass_item, popup.getMenu());
//registering popup with OnMenuItemClickListener
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
Toast.makeText(Products.this, "You Clicked : " + item.getTitle(), Toast.LENGTH_SHORT).show();
return true;
}
});
popup.show();//showing popup menu
}
});
我想为每个项目设置不同的背景颜色。我设置android:drawable
,但这不起作用。
我可以使用此代码可以更改文本颜色,但我不知道如何更改背景颜色项
Menu menu=popup.getMenu();
MenuItem item = menu.getItem(0);
SpannableString s = new SpannableString("My red MenuItem");
s.setSpan(new ForegroundColorSpan(Color.RED), 0, s.length(), 0);
item.setTitle(s);
答案 0 :(得分:1)
如果您想使用item
代码并以 替代 的方式执行此操作,您可以尝试BackgroundColorSpan
并编写逻辑以重新格式化字符串的长度。
s.setSpan(new BackgroundColorSpan(Color.RED), 0, s.length(), 0);
输出:
其他
如果我这样做,我会在没有标题的情况下创建一个Dialog
private Dialog fakeDialogUseInstedOfMenuItem;
fakeDialogUseInstedOfMenuItem = new Dialog(MainActivity.this);
fakeDialogUseInstedOfMenuItem.requestWindowFeature(Window.FEATURE_NO_TITLE); // no Title
fakeDialogUseInstedOfMenuItem.setContentView(R.layout.my_custom_view);
并为其设置固定或滚动视图作为要求
my_custom_view.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="250dp"
android:layout_height="200dp"
android:orientation="vertical">
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#789"
android:orientation="vertical">
<LinearLayout
android:id="@+id/first_lin"
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Option One"
android:textColor="#000"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#FFF"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Option Two"
android:textColor="#000"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"></LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#FFF"></LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>
并访问此类商品,
LinearLayout linearLayoutOneInDialog = (LinearLayout) fakeDialogUseInstedOfMenuItem.findViewById(R.id.first_lin);
out put:
但这些东西是可选的方式