我有兴趣整合名为"Quick Action"的Android UI模式.基本上,它是一个上下文菜单,不会掩盖正在执行的数据.我想实现这个,但我找不到一些示例代码或API来帮助我.
请注意,YouTube视频中讨论了此UI模式,http://www.youtube.com/watch?v = M1ZBllCRfz0#t = 15m20s.
有没有人有这个实现或知道谷歌的标准是什么将其添加到应用程序?
我有一个PopupWindow
我想要锚定到一个操作栏菜单项但无论如何似乎无法获得View
我想要点击的项目.这是该PopupWindow
showAsDropDown()
方法所必需的.
有谁知道如何实现这一目标?
我正在为操作栏项添加菜单.菜单将包含每个项目的垂直文本.菜单包含的内容并不重要.我基本上只想创建自己的视图,当我按下操作栏项时会弹出.所以出于这个问题的目的,你可以把我的观点想象成一个大黑盒子.
右边的图像是用Gimp制作的.这是我想要做的,而不是我已经完成的.
为了使用Material Design主题更新旧应用程序,我一直在浏览Android文档中的所有课程以添加应用栏.由于我的垂直文本菜单不适合常见情况,我必须创建一个自定义的Action Provider.但是,该文档未提供自定义操作提供程序的完整示例.我能找到的最好的是Stack Overflow的回答.
我能够做的最好(用黑色视图代表我未来的菜单)如下图所示:
上图中的星号目前有动作提供者.但是,自定义视图会在操作栏中被剪切掉.如何让它浮在一切?此外,我不希望它出现,直到我点击操作栏项目.目前,它只是立即显示.
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// setup toolbar
Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
setSupportActionBar(myToolbar);
...
}
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_settings:
// User chose the "Settings" item, show the app settings UI... …
Run Code Online (Sandbox Code Playgroud) 这是我的代码
home.xml
<item
android:id="@+id/action_shopping_cart"
android:actionLayout="@layout/action_bar_cart_button"
android:showAsAction="ifRoom"
android:title="Shopping Cart" />
<item
android:id="@+id/action_notifications"
android:actionLayout="@layout/action_bar_notifications_button"
android:showAsAction="ifRoom"
android:title="Notifications" />
<item
android:id="@+id/menu_overflow"
android:orderInCategory="100"
android:icon="@drawable/ic_action_overflow"
android:showAsAction="always"
android:title="OverFlow">
<menu>
<item
android:id="@+id/action_my_account"
android:orderInCategory="100"
android:showAsAction="never"
android:title="My Account" />
<item
android:id="@+id/action_current_orders"
android:orderInCategory="100"
android:showAsAction="never"
android:title="My Orders" />
<item
android:id="@+id/action_wish_list"
android:orderInCategory="100"
android:showAsAction="never"
android:title="My Wishlist" />
<item
android:id="@+id/action_contact_us"
android:orderInCategory="100"
android:showAsAction="never"
android:title="Contact Us" />
<item
android:id="@+id/action_logout"
android:orderInCategory="100"
android:showAsAction="never"
android:title="Logout" />
</menu>
</item>
Run Code Online (Sandbox Code Playgroud)
我想查看"menu_overflow"我怎么能得到它?
我试过以下方式:
Activity.java代码
public boolean onCreateOptionsMenu(Menu menu){
final MenuItem item = menu.findItem(R.id.menu_overflow);
View view = (View) findViewById(R.id.menu_overflow);
new MaterialShowcaseView.Builder(this) …
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个自定义弹出菜单,我想在操作栏的溢出菜单按钮上定位(如果重要的话,我正在使用Toolbar
with setSupportActionBar()
for this).我发现这可以通过setAnchorView()
(从" 溢出"菜单中读取" 自定义菜单"项)来完成.
但是,我似乎无法弄清楚如何检索溢出菜单作为一个视图(我可以用来设置锚点).
此外,我尝试将此锚定到活动本身的父布局,但它显示在左上方,菜单的高度等于操作栏的高度(这不是很有用).
有谁知道如何实现这一目标?
android popupmenu android-menu android-actionbar overflow-menu
我正在尝试获取菜单项的参考,但我不能。整个事情都在一个片段中。
菜单: boat_accept_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"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.toolbar.MainActivity" >
<item
android:id="@+id/done_boat_select"
android:title="@string/done_C"
app:showAsAction="always"/>
</menu>
Run Code Online (Sandbox Code Playgroud)
您可以在代码中看到注释,我无法获得参考。
代码:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
getActivity().getMenuInflater().inflate(R.menu.boat_accept_menu, menu);
//boatClassSelectedBtn =(View) menu.findItem(R.id.done_boat_select);
//Cannot Cast Exception
//boatClassSelectedBtn =(View) menu.findItem(R.id.done_boat_select).getActionView();
//Null reference
//boatClassSelectedBtn = menu.getItem(0).getActionView();
//Null reference
if (boatClassSelectedBtn == null) {
Log.e("boatClassSelectedBtn", "NULL!");
}
else
{
Log.i("boatClassSelectedBtn", "OK!");
}
}
Run Code Online (Sandbox Code Playgroud)
问题是什么?如何实现这一目标?
当他们第一次启动应用程序时,我正在使用MaterialShowcaseView向用户显示快速教程.
我遇到的问题是,当用户在onOptionsItemSelected中选择该项时,我只能获取操作栏项中项的视图引用.
即
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.my_location:
// User chose the "Favorite" action, mark the current item
// as a favorite...
ShowcaseConfig config = new ShowcaseConfig();
config.setDelay(500); // half second between each showcase view
MaterialShowcaseSequence sequence = new MaterialShowcaseSequence(this, SHOWCASE_ID);
sequence.setConfig(config);
sequence.addSequenceItem(findViewById(R.id.action_my_location),
"This is button one", "GOT IT");
sequence.start();
Toast.makeText(MapsActivity.this, "My location action press", Toast.LENGTH_SHORT).show();
return true;
default:
// If we got here, the user's action was not recognized.
// Invoke …
Run Code Online (Sandbox Code Playgroud) 我有一个带有图标的菜单项(例如,想象一个带有单个柳叶刀的时钟),我想让它的图标无限旋转.
我怎么能管理这个效果?谢谢.