use*_*062 8 android popup android-menu android-actionbar
我只想在Gmail应用中实现与弹出菜单相同的功能,并固定在右上角的溢出按钮上.为此,我使用与Android Android弹出菜单的谷歌教程相同的代码,但对于我显示弹出菜单在动作栏的边缘不在那之下.如果你在gmail溢出的pop菜单上注意到你看到popmenu发生在actionbar的边缘.
这是我用于弹出菜单的xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/item1"
android:title="lablab"/>
<item
android:id="@+id/item2"
android:title="lablab"/>
</menu>
Run Code Online (Sandbox Code Playgroud)
以下是我的活动:
public void showFontSetting(View view) {
PopupMenu popup = new PopupMenu(this, view);
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.menu, popup.getMenu());
popup.show();
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case R.id.item1:
Toast.makeText(Index.this,
"You Clicked : " + item.getTitle(),
Toast.LENGTH_SHORT).show();
break;
case R.id.item2:
break;
}
return true;
}
});
}
Run Code Online (Sandbox Code Playgroud)
use*_*087 45
PopupMenu popupMenu = new PopupMenu(getContext(), this, Gravity.NO_GRAVITY, R.attr.actionOverflowMenuStyle, 0);
Run Code Online (Sandbox Code Playgroud)
styles.xml
<style name="PopupMenuOverlapAnchor" parent="@style/Theme.AppCompat.Light">
<item name="android:overlapAnchor">true</item>
<item name="android:dropDownVerticalOffset">0dp</item>
<item name="android:dropDownHorizontalOffset">0dp</item>
</style>
Run Code Online (Sandbox Code Playgroud)
码:
ContextThemeWrapper contextThemeWrapper = new ContextThemeWrapper(getContext(), R.style.PopupMenuOverlapAnchor);
PopupMenu popupMenu = new PopupMenu(contextThemeWrapper, this);
Run Code Online (Sandbox Code Playgroud)
不再起作用了:
这里有一个简单的方法来调整a的位置PopupMenu.它将菜单定位在其锚点视图(overflowButton)上,就像操作栏中的菜单一样:
PopupMenu popupMenu = new PopupMenu(context, overflowMenuButton);
popupMenu.inflate(R.menu.my_menu);
// Fix vertical offset
overflowMenuButton.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
popupMenu.show();
if (popupMenu.getDragToOpenListener() instanceof ListPopupWindow.ForwardingListener)
{
ListPopupWindow.ForwardingListener listener = (ListPopupWindow.ForwardingListener) popupMenu.getDragToOpenListener();
listener.getPopup().setVerticalOffset(-overflowMenuButton.getHeight());
listener.getPopup().show();
}
}
});
Run Code Online (Sandbox Code Playgroud)
小智 5
将以下代码段添加到您的活动中:
PopupWindow popupwindow_obj; // create object
popupwindow_obj=popupDisplay(); // initialize in onCreate()
popupwindow_obj.showAsDropDown(clickbtn,-40, 18); // where u want show on view click event
public PopupWindow popupDisplay() { // disply designing your popoup window
final PopupWindow popupWindow = new PopupWindow(this); // inflet your layout or diynamic add view
View view;
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.mylayout, null);
Button item = (LinearLayout) view.findViewById(R.id.button1);
popupWindow.setFocusable(true);
popupWindow.setWidth(WindowManager.LayoutParams.WRAP_CONTENT);
popupWindow.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
popupWindow.setContentView(view);
return popupWindow;
}
Run Code Online (Sandbox Code Playgroud)
在res/layout目录中创建XML 并将其命名mylayout.xml
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Window test" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
在我的情况下,应用重力帮助
PopupMenu popup = new PopupMenu(this, v, Gravity.RIGHT);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31196 次 |
| 最近记录: |