2011-08-22 57 views
4

我正在嘗試爲其他ActionBar項目複製溢出菜單下拉功能。我正在研究這個功能的手動實現,因爲我認爲它已經被排除在環境之外(可能迫使UI的標準化)。當您點擊溢出菜單時,是否有人知道下拉列表中使用了哪些樣式/樣式項目?ActionBar溢出菜單手動執行樣式信息

EDIT

溢流按鈕實際上是一個修飾的微調。這是它的樣式信息。

<style name="Widget.Holo.Spinner" parent="Widget.Spinner.DropDown"> 
    <item name="android:background">@android:drawable/spinner_background_holo_dark</item> 
    <item name="android:dropDownSelector">@android:drawable/list_selector_holo_dark</item> 
    <item name="android:popupBackground">@android:drawable/menu_dropdown_panel_holo_dark</item> 
    <item name="android:dropDownVerticalOffset">0dip</item> 
    <item name="android:dropDownHorizontalOffset">0dip</item> 
    <item name="android:dropDownWidth">wrap_content</item> 
    <item name="android:popupPromptView">@android:layout/simple_dropdown_hint</item> 
    <item name="android:gravity">left|center_vertical</item> 
</style> 

回答

2

這裏是我所拼湊起來的一個綜述:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/dropdownContainer" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" > 

    <LinearLayout 
     android:id="@+id/leftBuffer" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" /> 

    <LinearLayout 
     android:layout_width="150dp" 
     android:layout_height="match_parent" 
     android:orientation="vertical" > 

     <ListView 
      android:id="@+id/actionbarDropdown" 
      style="@style/Widget.ActionBarDropDown" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:cacheColorHint="@android:color/transparent" 
      android:entries="@array/sortOptions" /> 

     <LinearLayout 
      android:id="@+id/bottomBuffer" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" /> 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/rightBuffer" 
     android:layout_width="118px" 
     android:layout_height="match_parent" /> 

</LinearLayout> 

添加一個onClick到動作條項,其中:增加了上述佈局作爲一個孩子到你的活動的ViewGroup根給你下降的幻覺。

將OnClick添加到從根ViewGroup中刪除視圖的每個緩衝區允許在嘗試移動焦點時下拉到「退出」。

的下拉是樣式信息:

<item name="android:background">@drawable/menu_dropdown_panel_holo_light</item> 
<item name="android:dropDownSelector">@drawable/list_selector_background</item> 

每個列表項的佈局是:

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="48dp" 
     android:textSize="17sp" 
     android:gravity="right|center_vertical" 
     style="?android:attr/dropDownItemStyle" 
     android:ellipsize="marquee" 
     android:id="@android:id/text1">  
</TextView> 

這不會給溢出一滴的功能完美複製下來,但它非常接近。如果有其他人知道以更綜合的方式重現此功能的方法,我非常感興趣!

<?xml version="1.0" encoding="utf-8"?> 
<ImageButton xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/action_starred" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    style="?android:attr/actionButtonStyle" 
    android:src="@drawable/ic_action_star" /> 

我再附上OnClickListener它在onCreateOptionsMenu()它只是增加了一個片段,它需要創造一個ListPopupWindow和設置的護理:

+0

How's style =「@ style/Widget.ActionBarDropDown」defined?我無法解決這種風格? – Henrik

0

我通過使我把ActionBar中一個簡單的自定義視圖實現這一目標該錨點是行動視圖。它通過getActivity().findViewById(R.id.action_starred)找到操作視圖。

簡而言之,您可以將彈出式菜單設置爲模式,以使其更像菜單。作爲列表項目,您可以使用android.R.layout.simple_dropdown_item_1line之類的內容。

即使您不像我那樣將視圖放在ActionBar中,此方法也應該可以正常工作。