элементы всплывающего меню в listView не видны

Я использую кнопку изображения в ListView, которая при нажатии показывает всплывающее меню. Но проблема в том, что предметов не видно. Вот как выглядит меню: на этом изображении я вижу белый текст в меню, но на экране мобильного он не виден. введите описание изображения здесь

Это styles.xml

<resources>
    <!-- Base application theme. -->
   <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

       <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:colorBackground">@color/colorPrimary</item>
        <item name="android:textColorPrimary">@android:color/black</item>
        <item name="android:textColorSecondary">#fcfcfc</item>
        <item name="android:actionMenuTextColor">@color/black</item>
   </style>

    <style name="itemTextStyle.AppTheme" parent="@android:style/TextAppearance.Widget.IconMenu.Item">
        <item name="android:textColor">@android:color/black</item>
        <item name="android:colorBackground">@color/colorPrimary</item>

    </style>

    <!-- LoginCreateText -->
    <style name="LoginCreateText">
        <item name="android:textSize">@dimen/login_buttons_text_size</item>
        <item name="android:textColor">@android:color/white</item>
        <item name="android:layout_margin">2dp</item>
    </style>

    <!-- LoginCreateTextButton -->
    <style name="LoginCreateTextButton">
        <item name="android:textSize">@dimen/login_buttons_text_size</item>
        <item name="android:textStyle">bold</item>
        <item name="android:textColor">@android:color/white</item>
        <item name="android:layout_margin">2dp</item>
        <item name="android:clickable">true</item>
    </style>

    <style name="HintText">
        <item name="android:textSize">0dp</item>
    </style>

    <style name="FAB">
        <item name="android:layout_margin">0dp</item>
        <item name="fabSize">normal</item>
        <item name="rippleColor">@android:color/white</item>
        <item name="backgroundTint">@color/colorAccent</item>
    </style>

    <style name="ListItemText">
        <item name="android:textColor">@color/light_black</item>
        <item name="android:textSize">@dimen/list_item_text_size</item>
        <item name="android:layout_margin">2dp</item>
    </style>
</resources>

Это themes.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="Widget.Button.Login" parent="android:Widget.Button">
        <item name="android:paddingLeft">18dp</item>
        <item name="android:paddingRight">16dp</item>
        <item name="android:textSize">@dimen/login_buttons_text_size</item>
        <item name="android:layout_gravity">center</item>
        <item name="android:background">@color/colorPrimary</item>
    </style>

    <style name="Toolbar" parent="@style/Widget.AppCompat.Light.ActionBar">
        <item name="android:itemTextAppearance">@style/itemTextStyle.AppTheme</item>
        <item name="android:background">@color/colorPrimary</item>
        <item name="android:textColorPrimary">@android:color/white</item>
    </style>
    <style name="CustomTheme.Dialog" parent="Theme.AppCompat.Light.Dialog"/>
</resources>

Это меню, которое я пытаюсь отобразить.

   <?xml version="1.0" encoding="utf-8"?>
         <menu xmlns:app="http://schemas.android.com/apk/res-auto"
         xmlns:android="http://schemas.android.com/apk/res/android"
         app:popupTheme="@style/itemTextStyle.AppTheme">

<item
android:id="@+id/action_edit"
android:title="@string/action_edit" />

<item
    android:id="@+id/action_delete"
    android:title="@string/action_delete"/>

<item
    android:id="@+id/action_assign"
    android:title="@string/action_assign"
    android:checkable="true"/>

<item
    android:id="@+id/action_mark"
    android:title="@string/action_mark"
    android:enabled="false"/>
</menu>

Это файл макета для фрагмента викторины.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/rl_fragment_quiz_lists"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/grey"
    app:popupTheme="@style/itemTextStyle.AppTheme"
    tools:context=".ui.fragments.QuizFragment">

    <include layout="@layout/single_active_list" />

    <ListView
        android:id="@+id/list_view_active_lists"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scrollbars="none" />

    <android.support.design.widget.FloatingActionButton xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/fab"
        style="@style/FAB"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:onClick="showAddQuizDialog"
        android:src="@drawable/ic_add_quiz"
        app:borderWidth="0dp"
        app:elevation="6dp"
        app:pressedTranslationZ="12dp">
        <!--app:rippleColor="@android:color/white" /> -->
    </android.support.design.widget.FloatingActionButton>

</RelativeLayout>

Это файл макета действия, в котором отображается этот фрагмент.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/grey"
    android:orientation="vertical">

    <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/app_bar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:theme="@style/Toolbar" />

    <android.support.design.widget.TabLayout
        android:id="@+id/tab_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/Toolbar" />

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>

Я пробовал много решений, о которых спрашивали раньше (все касались меню панели инструментов), но ни одно из них не помогло мне. Я определил новый стиль в styles.xml

<style name="itemTextStyle.AppTheme" parent="@android:style/TextAppearance.Widget.IconMenu.Item">
        <item name="android:textColor">@android:color/black</item>
        <item name="android:colorBackground">@color/colorPrimary</item>

и включил его в AppTheme, который не работал. затем я включил его в стиль панели инструментов, макет меню, макет QuizFragment, но элементы все еще были невидимы. Как изменить цвет фона или цвет элемента меню, чтобы исправить это, любой из них будет работать.


person farheen    schedule 25.10.2016    source источник
comment
Проверьте это, это может быть полезно stackoverflow.com/questions/25037418/   -  person Raghavendra    schedule 25.10.2016
comment
@Raghavendra, спасибо за ответ, но это не устранило проблему. Думаю, я где-то установил белый цвет, что является причиной этого. но не знаю где.   -  person farheen    schedule 25.10.2016


Ответы (2)


Попробуй это

style.xml

<style name="CustomActionBarTheme" parent="@style/Theme.AppCompat">
    <item name="android:actionOverflowButtonStyle">@style/OverflowButton</item>
    <item name="actionOverflowButtonStyle">@style/OverflowButton</item>
    <item name="windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
    <item name="android:dropDownListViewStyle">@style/PopupMenuListView</item>
    <item name="dropDownListViewStyle">@style/PopupMenuListView</item>
    <item name="actionOverflowMenuStyle">@style/OverflowMenu</item>
    <item name="actionBarDivider">@null</item>
    <!-- OverFlow Menu Text Color -->
    <item name="android:textColor">@color/black</item>
</style>

<!-- OverFlow menu Styles -->
<style name="PopupMenuListView" parent="@style/Widget.AppCompat.Light.ListView.DropDown">
    <item name="android:divider">@color/black</item>
    <item name="android:dividerHeight">1dp</item>
    <item name="android:background">@color/white</item>
</style>

<style name="OverflowMenu" parent="Widget.AppCompat.PopupMenu.Overflow">
    <!-- Required for pre-Lollipop. -->
    <item name="overlapAnchor">false</item>
    <!-- Required for Lollipop. -->
    <item name="android:overlapAnchor">false</item>
    <item name="android:dropDownVerticalOffset">4.0dip</item>
</style>

и определите тему для Activity в AndroidManifest.xml

<activity
 android:name=".YourActivityName"
 android:theme="@style/CustomActionBarTheme"/>
person Kapil Rajput    schedule 25.10.2016
comment
Большое спасибо. Я потратил на это много времени и был немного разочарован. . Еще один вопрос, пожалуйста. Я установил тему своего действия на AppTheme, у которого также было ‹item name = android: textColor› @ color / black ‹/item›, но это не сработало. Что именно в этом коде делало мой текст видимым? - person farheen; 25.10.2016
comment
После использования этой темы цвета элементов optionMenu также изменились, что выглядит не очень хорошо. - person farheen; 29.10.2016
comment
вы можете настроить цвет меню параметров в соответствии с вашей темой, указав в PopupMenuListView - person Kapil Rajput; 01.11.2016

Я использую только два файла тем (темный и дневной)

Theme.MaterialComponents.DayNight.NoActionBar.Bridge

внутри у меня только одноименные вещи для дня и ночи, но разного цвета. Обнаружил (после экспериментов) ... что эта строка меняет правила игры в моем случае (та же проблема, что и у вас), чтобы заголовок и меню были белыми, а текст во всплывающем меню был черным

        <item name="android:textColorSecondary">@android:color/white</item>

вот весь файл, я использовал только его, и стараюсь ничего не кодировать жестко.

<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.Ch+++itche+++++" parent="Theme.MaterialComponents.DayNight.NoActionBar.Bridge">
    <!-- Primary brand color. -->

    <item name="android:textColorSecondary">@android:color/white</item>
    <item name="colorPrimary">@color/primaryColor</item>
    <item name="colorPrimaryVariant">@color/primaryDarkColor</item>
    <item name="colorOnPrimary">@color/primaryLightColor</item>
    <item name="colorOnSurface">@color/primaryColorWhiteDay</item>
    <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
    <!-- Customize your theme here. -->
</style>

Это все,

Удачного кодирования, Ненад

person Nenad Štrbić    schedule 09.06.2021