在我的Android应用程序(minSdk 11,committedSdk 24)中,如果用户长按主视图中的任何行,则会显示ContextMenu。
ContextMenu根据所按下的行而动态地构建。
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
final View view = v;
final ScrollView sview = (ScrollView) findViewById(R.id.TableScrollView);
final TableRow tr = (TableRow) v;
selectTableRow(tr);
// Imposto titolo
final SchedaTrenoParsedRow row = (SchedaTrenoParsedRow) view.getTag(R.id.Row);
menu.setHeaderTitle(getText(R.string.contextmenutitle) + " - " + row.getLocalita());
if (row.getIndTestPri() != 0 && row.getIndTestSec() != 0) {
menu.add("Visualizza Moduli").setOnMenuItemClickListener(new OnMenuItemClickListener() {
.... etc ....
Android 7中出现问题。出现的PopupMenu样式错误。页眉太小太暗,无法在屏幕中居中,并且整个PopupMenu的尺寸都无法适应其中的文本。
为解决此问题,我创建了一个新的values-sw720dp-v24资源文件夹,并在其中创建了一个新的styles.xml文件。
这是我定义的样式。
<style name="ContextPopupMenuStyle" parent="@android:style/Widget.Holo.PopupMenu">
<item name="android:overlapAnchor">true</item>
<item name="android:layout_width">wrap_content</item>
</style>
<style name="HeaderText" parent="@android:style/TextAppearance.DeviceDefault.Large.Inverse">
<item name="android:textColor">#33B3E2</item>
<item name="android:textSize">18dp</item>
</style>
<style name="MyTheme" parent="android:Theme.Holo">
<item name="android:contextPopupMenuStyle">@style/ContextPopupMenuStyle</item>
<item name="android:textAppearancePopupMenuHeader">@style/HeaderText</item>
</style>
所考虑的标题样式。我认为,也是overlayAnchor属性。但是我找不到样式PopupMenu大小的方法。
谢谢