android – ActionBar溢出菜单样式信息,用于手动实现

我正在尝试复制其他ActionBar项目的“溢出菜单”下拉列表功能.我正在努力手动实现这个功能,因为我认为它已被排除在环境之外(可能会强制UI的标准化).当您单击“溢出”菜单时,是否有人知道下拉列表中使用的样式/样式项?

编辑

溢出按钮实际上是一个修改过的微调器.这是它的样式信息.

<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>

解决方法:

这是我拼凑在一起的综述:

<?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添加到ActionBar项目中:将上述布局作为子项添加到您的Activities根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>

这并没有提供溢出下拉功能的完美副本,但它非常接近.我很感兴趣,如果有其他人知道以更集成的方式重现此功能的方法!

上一篇:带有自定义DefaultStyleKey的自定义窗口丢失FocusVisualStyle


下一篇:跟我一起做一个vue的小项目(二)