如何在每個popup菜單中自定義popupmenu以更改每個選項的顏色/字體/樣式?如何自定義Android中每個選項的彈出菜單?
1
A
回答
0
你可以把一個彈出式的視圖,或作爲saperate活動甚至(透明backgound,看看Android上的主題選項)
然後,當你想顯示彈出,你可以啓動它從應用程序中的任何活動中,它始終具有與bg和按鈕相同的樣式,您只會將其實際數據饋送給它。
對於〔實施例:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="300dp"
android:background="@drawable/bg_popup"
android:layout_gravity="center"
android:alpha="0.8"
android:visibility="visible"
android:id="@+id/generic_popup2_container"
android:layout_height="300dp">
<TextView
android:id="@+id/generic_popup2_tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:layout_alignParentTop="true"
android:text="header"
android:gravity="center"
android:textSize="28sp" />
<TextView
android:id="@+id/generic_popup2_tv_inner_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:text="content"
android:textSize="16sp"
android:gravity="center"
android:layout_marginTop="20dp"
android:layout_below="@id/generic_popup2_tv_title"
android:layout_centerHorizontal="true" />
<LinearLayout
android:id="@+id/generic_popup_2_buttons_layout"
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="20dp"
android:orientation="horizontal">
<Button
android:id="@+id/layout_2_generic_popup_btn_action1"
android:layout_width="115dp"
android:layout_height="35dp"
android:textColor="@color/white"
android:layout_marginBottom="10dp"
android:textSize="12sp"
android:layout_marginRight="10dp"
android:background="@drawable/popup_btn_blue" />
<Button
android:id="@+id/layout_2_generic_popup_btn_action2"
android:layout_width="115dp"
android:layout_height="35dp"
android:textColor="@color/white"
android:textSize="12sp"
android:background="@drawable/popup_btn_blue" />
</LinearLayout>
0
創建一個彈出窗口和自定義它,你會的。
這裏有一些有用的鏈接:
how-to-create-popup-window-in-android
你也可以看看quickaction dialog。
1
我有同樣的問題來自定義PopupMenu的字體和文字大小。最後我用反射。它可以用於任何自定義彈出菜單項目。 android支持菜單項的資源佈局是在android.support.v7.internal.view.menu.MenuPopupHelper中定義的,它的字段名是「ITEM_LAYOUT」,聲明爲static final;它的值等於「R.layout.abc_popup_menu_item_layout」 我在Grepcode中找到佈局文件並將其複製到我的項目佈局目錄中。我將其命名爲popup_menu_item_layout.xml。我的彈出式菜單項的佈局來這裏
<?xml version="1.0" encoding="utf-8"?>
<mypackage.PopupMenuItemView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?attr/dropdownListPreferredItemHeight"
android:minWidth="196dip"
android:paddingRight="16dip">
<!-- Icon will be inserted here. -->
<!-- The title and summary have some gap between them, and this 'group' should be centered vertically. -->
<RelativeLayout
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="16dip"
android:duplicateParentState="true">
<TextView
android:id="@+id/title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:textAppearance="?attr/textAppearanceLargePopupMenu"
android:singleLine="true"
android:duplicateParentState="true"
android:ellipsize="marquee"
android:fadingEdge="horizontal"/>
<TextView
android:id="@+id/shortcut"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/title"
android:layout_alignParentLeft="true"
android:textAppearance="?attr/textAppearanceSmallPopupMenu"
android:singleLine="true"
android:duplicateParentState="true"/>
</RelativeLayout>
<!-- Checkbox, and/or radio button will be inserted here. -->
然後創建自定義類PopupMenuItemView:
public class PopupMenuItemView extends android.support.v7.internal.view.menu.ListMenuItemView {
public PopupMenuItemView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public PopupMenuItemView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();
applyTypefaceToAll(this, your_typeface);
TypefaceUtils.applyTextSizeToAll(this, your_textsize);
}
public static void applyTypefaceToAll(View view, Typeface typeface) {
if (view instanceof ViewGroup) {
ViewGroup viewGroup = (ViewGroup) view;
for (int childIndex = 0; childIndex < viewGroup.getChildCount(); childIndex++)
applyTypefaceToAll(viewGroup.getChildAt(childIndex), typeface);
} else if (view instanceof TextView) {
TextView textView = (TextView) view;
textView.setTypeface(typeface);
textView.setPaintFlags(textView.getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG | Paint.DEV_KERN_TEXT_FLAG | Paint.ANTI_ALIAS_FLAG);
}
}
public static void applyTextSizeToAll(View view, float size) {
if (view instanceof ViewGroup) {
ViewGroup viewGroup = (ViewGroup) view;
for (int childIndex = 0; childIndex < viewGroup.getChildCount(); childIndex++)
applyTextSizeToAll(viewGroup.getChildAt(childIndex), size);
} else if (view instanceof TextView) {
TextView textView = (TextView) view;
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, size);
textView.setPaintFlags(textView.getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG | Paint.DEV_KERN_TEXT_FLAG | Paint.ANTI_ALIAS_FLAG);
}
}
}
最後替換佈局資源ID通過反射菜單項;一些在您的主要活動onCreate方法或在您的應用程序的onCreate方法,其中,如:
try {
setFinalStatic(MenuPopupHelper.class.getDeclaredField("ITEM_LAYOUT"),
R.layout.popup_menu_item_layout);
} catch (Exception e) {
e.printStackTrace();
}
public static void setFinalStatic(Field field, Object newValue) throws Exception {
field.setAccessible(true);
try {
Field modifiersField = Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
}catch (Exception e) {
e.printStackTrace();
}
field.set(null, newValue);
}
相關問題
- 1. Android中的自定義選項菜單
- 2. 自定義菜單選項按鈕android
- 3. 下拉菜單爲Android中的每個自定義ListView項目
- 4. asp.net自定義菜單每個項目
- 5. Android - 添加自定義佈局彈出菜單項
- 6. 如何在android中創建自定義選項菜單
- 7. WordPress的自定義彈出菜單
- 8. 如何將彈出菜單添加到自定義列表視圖到每個項目android
- 9. VIM:自定義omnicomplete彈出式菜單
- 10. 自定義彈出式菜單
- 11. 如何在Rails 3中自定義options_from_collection_for_select中的菜單選項?
- 12. 帶字幕的Android自定義彈出式菜單
- 13. 帶開關的Android自定義彈出菜單
- 14. 如何自定義windows默認的右鍵彈出菜單
- 15. Android工具欄中的自定義選項菜單
- 16. jquery ui菜單自定義彈出式菜單
- 17. 自定義菜單選項使用menu.addIntentOptions()
- 18. Android:自定義菜單項大小
- 19. 如何創建自定義彈出式菜單
- 20. 如何從MenuItem完全自定義彈出菜單?
- 21. 如何使用自定義視圖創建彈出式菜單?
- 22. 如何使用自定義的CSS樣式彈出選擇菜單
- 23. 如何通過選定的選項設置彈出菜單中的更改?
- 24. FF擴展:帶有動態菜單項的彈出框,每個菜單項都有另一個彈出框
- 25. 如何在Android中使用progressBar創建自定義菜單項
- 26. 如何自定義HTML選擇選項菜單?
- 27. android彈出菜單
- 28. 使用自定義主題和選項的自定義選項菜單
- 29. 單擊selectbox時彈出的自定義選項框(iOS,HTML,CSS)
- 30. Android:自定義webview和選項菜單的問題
其實我無法預測的TextView的計數,不知何故3,4,5和> 5,這樣我就可以用這種方式爲我的情況? –
這就是通用性可能成爲陷阱的地方,在圖形方面以及如何通過代碼實際構建它以保持通用並且能夠維護它。 我會建議爲每個彈出文件建立一個不同的佈局,只是爲了維護。 –