MenuDropDownListView
按下工具栏上的 an 后,S-Pen 无法正确滚动OverflowMenuButton
(参见下面的 gif)。
当 S-Pen 接触时,菜单会被强制返回顶部。
这个问题似乎不是MenuDropDownListView
. PopupMenu
从AndroidX
库中滚动 a 时也会发生这种情况( androidx.appcompat.widget.PopupMenu
)。但是,在使用标准 Android 库 ( )时,这种行为可以正常工作。PopupMenu 场景对我遇到的问题不太重要,但它可能仍然相关。android.widget.PopupMenu
以下 gif 是尝试使用 S-Pen 滚动到列表底部的示例,记录在 Samsung Galaxy Note20(Android 11,stock ROM)上:
以下 GIF 尝试滚动到每个 PopupMenu 的底部,记录在三星 Galaxy Note20(Android 11,库存 ROM)上:
OverflowMenu 的代码如下:
res/menu/example_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
>
<item android:id="@+id/item1"
android:icon="@drawable/ic_5g"
android:title="Item 1"
app:showAsAction="ifRoom"
/>
<item android:id="@+id/item2"
android:title="Item 1"
app:showAsAction="never"
/>
<item android:id="@+id/item3"
android:title="Item 3"
app:showAsAction="never">
<menu>
<item android:title="TOP ITEMS HERE" />
<item android:title="TOP ITEMS HERE" />
<item android:title="TOP ITEMS HERE" />
<item android:title="TOP ITEMS HERE" />
<item android:title="TOP ITEMS HERE" />
<item android:title="TOP ITEMS HERE" />
<item android:title="TOP ITEMS HERE" />
<item android:title="Sub Item" />
<item android:title="Sub Item" />
<item android:title="Sub Item" />
<item android:title="Sub Item" />
<item android:title="Sub Item" />
<item android:title="Sub Item" />
<item android:title="Sub Item" />
<item android:title="Sub Item" />
<item android:title="Sub Item" />
<item android:title="Sub Item" />
<item android:title="Sub Item" />
<item android:title="Sub Item" />
<item android:title="Sub Item" />
<item android:title="Sub Item" />
<!-- REPEATING... -->
</menu>
</item>
</menu>
MainActivity.java
package com.example.popupmenutest;
import android.view.Menu;
import android.view.MenuInflater;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.example_menu, menu);
return true;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}