我知道使用本机API是不可能的.是否有解决方法来实现这种视图?
我非常喜欢我们在3.0中获得的新PopupMenu,但我无法在其中显示菜单项旁边的任何图标.我正在从下面的.xml中填充菜单:
<item android:id="@+id/menu_delete_product"
android:icon="@drawable/sym_action_add"
android:title="delete"
android:showAsAction="ifRoom|withText" />
<item android:id="@+id/menu_modify_product"
android:icon="@drawable/sym_action_add"
android:title="modify"
android:showAsAction="ifRoom|withText" />
<item android:id="@+id/menu_product_details"
android:icon="@drawable/sym_action_add"
android:title="details"
android:showAsAction="ifRoom|withText" />
Run Code Online (Sandbox Code Playgroud)
使用此代码:
image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PopupMenu pop = new PopupMenu(getActivity(), v);
pop.getMenuInflater().inflate(R.menu.shelves_details_menu, pop.getMenu());
pop.show();
}
});
Run Code Online (Sandbox Code Playgroud)
我不能让图标出现,我错过了什么?
我想为我的溢出菜单自定义背景和文字颜色.没有硬件菜单按钮的设备可以正常工作,但我无法使用硬件菜单按钮设置设备样式.查看截图:

我正在使用这些样式:
<style name="Theme.settleup" parent="@style/Theme.Sherlock.Light.DarkActionBar">
<item name="android:popupMenuStyle">@style/settleup_PopupMenu</item>
<item name="android:actionMenuTextColor">@android:color/white</item>
</style>
<style name="settleup_PopupMenu" parent="@style/Widget.Sherlock.ListPopupWindow">
<item name="android:popupBackground">@drawable/menu_dropdown_panel_settleup</item>
</style>
Run Code Online (Sandbox Code Playgroud) 我从查询数据库生成菜单的每个选项.这是我的代码.
final PopupMenu popupMenu = new PopupMenu(getBaseContext(), v);
SQLiteDatabase db = AdapterDb.getReadableDatabase();
Cursor cursor = db.rawQuery(sql, null);
int ctritem = 0;
if (cursor.moveToFirst()) {
popupMenu.getMenu().add(Menu.NONE, ctritem, Menu.NONE, "ALL ITEMS");
do {
ctritem++;
popupMenu.getMenu().add(Menu.NONE, ctritem, Menu.NONE, cursor.getString(0));
} while (cursor.moveToNext());
}
Run Code Online (Sandbox Code Playgroud)
一切都还可以,但问题是如何改变选项菜单的颜色或弹出菜单的背景颜色(从黑色到白色),是否可能?谢谢
我需要更改popuo菜单的文本颜色,但我找不到任何方法可以做到这一点,我可以更改popmenu的背景而不是文本,我以这种方式编辑style.xml:
<style name="AppBaseTheme" parent="Theme.AppCompat.Light">
<!-- API 14 theme customizations can go here. -->
<item name="popupMenuStyle">@style/MyPopupMenu</item>
<item name="android:textAppearanceLargePopupMenu">@style/myPopupMenuTextAppearanceLarge</item>
<item name="android:textAppearanceSmallPopupMenu">@style/myPopupMenuTextAppearanceSmall</item>
</style>
<style name="MyPopupMenu" parent="@style/Widget.AppCompat.PopupMenu">
<item name="android:popupBackground">#0F213F</item>
</style>
<style name="myPopupMenuTextAppearanceSmall" parent="@style/TextAppearance.AppCompat.Base.Widget.PopupMenu.Small">
<item name="android:textColor">#ffffff</item>
</style>
<style name="myPopupMenuTextAppearanceLarge" parent="@style/TextAppearance.AppCompat.Base.Widget.PopupMenu.Large">
<item name="android:textColor">#ffffff</item>
</style>
Run Code Online (Sandbox Code Playgroud)
哪里出错了?
我试图改变popupmenu的背景,但我的实现不起作用.
这是我的代码:
<style name="MyHoloLight" parent="android:Theme.Holo.Light">
<item name="android:popupMenuStyle">@style/popupMenuStyle</item>
</style>
<style name="popupMenuStyle" parent="@android:style/Widget.PopupMenu">
<item name="android:popupBackground">@color/bgPopumMenu</item>
</style>
Run Code Online (Sandbox Code Playgroud)
在AndroidManifest.xml中应用
<application
android:hardwareAccelerated="true"
android:label="@string/app_name"
android:icon="@drawable/ic_launcher"
android:theme="@style/MyHoloLight">
Run Code Online (Sandbox Code Playgroud) 我在特定的Griditem上需要一个透明层,在那里我点击RED MARKED图标(3个点).我得到了透明层.但它不在网格上.我把它放在活动的顶部.这该怎么做?
这是我的代码:
在适配器类中:
private void createDialogBox() {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
final AlertDialog dialog = builder.create();
dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
View dialogLayout = LayoutInflater.from(context).inflate(R.layout.demo_dialog, null);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
dialog.setView(dialogLayout, 0, 0, 0, 0);
dialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface d) {
}
});
dialog.getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
dialog.show();
}
Run Code Online (Sandbox Code Playgroud)
demo_dialog.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout"
style="@style/LinearLayout_mm"
android:layout_gravity="center"
android:gravity="center"
android:onClick="Click"
android:orientation="vertical"
android:theme="@style/cust_dialog">
<ImageView
android:id="@+id/pullToRefresh_img"
style="@style/LinearLayout_mm"
android:onClick="Click"
android:src="@drawable/ig_dash_front1" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
style.xml:
<style name="cust_dialog" parent="@android:style/Theme.Holo.NoActionBar.Fullscreen">
<item name="android:textColor">@color/white</item>
<item name="android:background">#80000000</item>
<item name="android:windowFrame">@null</item>
<item name="android:windowBackground">@color/black</item> …Run Code Online (Sandbox Code Playgroud) 我正在尝试升级我的PopupMenu,因此它会带有图标和自定义样式.
我为它创建了一个新的布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android">
<RelativeLayout
android:id="@+id/layout_sharea"
android:background="@drawable/share"
android:paddingLeft="10.0dip"
android:paddingRight="10.0dip"
android:layout_width="wrap_content"
android:layout_height="50.0dip"
android:onClick="share">
<TextView
android:id="@+id/sharetexta"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/share"
android:drawableLeft="@drawable/share_button"
android:drawablePadding="10.0dip"
android:layout_centerVertical="true" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/layout_shareb"
android:background="@drawable/share"
android:paddingLeft="10.0dip"
android:paddingRight="10.0dip"
android:layout_width="wrap_content"
android:layout_height="50.0dip"
android:layout_below="@+id/layout_sharea"
android:onClick="share">
<TextView
android:id="@+id/sharetextb"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/share"
android:drawableLeft="@drawable/share_button"
android:drawablePadding="10.0dip"
android:layout_centerVertical="true" />
</RelativeLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
我希望PopupMenu可以自定义(就像这个布局一样)

所以我的ExpandableListView组行定义如下:
group_row.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/GroupName"
style="@style/ListViewRowStyle"
android:paddingLeft="40dp"
android:textSize="18sp" >
</TextView>
<ImageView
android:id="@+id/Menu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginTop="10dp"
android:contentDescription="@string/default_content_description_text"
android:src="@drawable/ic_menu_moreoverflow_normal_holo_light" >
</ImageView>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
当您单击TextView它时,它将展开或折叠,具体取决于当前是否显示子行.我附上了OnClickListener该ImageView组一行.ImageView单击此按钮时,我会启动PopupMenu如下图像:


一旦PopupMenu显示和动作中的一个被点击,我想在该组的所有儿童执行操作.问题是我无法确定ImageView单击的行.
我弄清楚如何将动作应用于所有孩子的唯一方法是使用ContextMenu如下图像:

我想避免使用a,ContextMenu因为组行上的LongClick可能不明显,用户无法确定它会在子行上执行某些操作.我认为更明显的设计是将a锚定PopupMenu到ImageView(在我的情况下是菜单图标)并将操作应用于该组的子行.我怎样才能获得这个功能PopupMenu?
android contextmenu popupmenu expandablelistview onclicklistener
我正在努力设置PopupMenu的背景.谷歌搜索了一段时间后,我发现它应该转到应用主题.更具体地说,这应该在style.xml中定义.
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:popupMenuStyle">MY_STYLE</item>
</style>
Run Code Online (Sandbox Code Playgroud)
但是,我并没有真正弄清楚我应该使用哪种风格,因为我认为有一种内置风格.我试着用@android:style/Widget.Holo.PopupMenu和@android:style/Widget.Holo.Light.PopupMenu,但没有运气.
public void onPopup(View view)
{
final PopupMenu menu=new PopupMenu(this,view);
menu.getMenuInflater().inflate(R.menu.menu1,menu.getMenu());
menu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener()
{
public boolean onMenuItemClick(MenuItem item)
{
Toast toast=Toast.makeText(MainActivity.this,
item.getTitle()+"Selected",Toast.LENGTH_SHORT);
//Intent intent2 = new Intent(MainActivity.this, YourSpotActivity.class);
//startActivity(intent2);
//startActivity(new Intent(MainActivity.this,YourSpotActivity.class));
toast.show();
return true;
}
});
menu.show();
}
Run Code Online (Sandbox Code Playgroud)
当我单击任何一个列表项时,它将启动另一个活动.我怎么能通过修改上面的代码来做到这一点.请解释一下.我在菜单中使用了四种车型.当我选择那辆车中的任何一辆时,它将进入特定的活动.
我PopupMenu在我的应用程序中使用了几个s,它们都按预期工作
但是我希望将白色线条分开,但我无法找到我想要设置的位置.我希望我可以访问底层的ListView,但这似乎不可能.我也看不到与分隔线相关的样式项.
这可能吗,我应该在哪里/如何设置?
customization android divider android-layout android-popupwindow
我尝试了以下代码
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.widget.EditText;
import android.widget.ListAdapter;
public class Custom_dialogActivity extends Activity {
/** Called when the activity is first created. */
String test[] = {"Security","Data Backup","Missing Device"};
ListAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setCancelable(true);
builder.setTitle("My Title");
builder.setInverseBackgroundForced(true);
builder.setIcon(R.drawable.ic_launcher);
builder.setItems(test, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
System.out.println("onClick " + which);
}
});
builder.setAdapter(adapter, …Run Code Online (Sandbox Code Playgroud)