Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Android工具栏溢出菜单将文本颜色和填充菜单更改为屏幕

Android工具栏溢出菜单将文本颜色和填充菜单更改为屏幕
EN

Stack Overflow用户
提问于 2015-07-06 08:59:46
回答 2查看 1.3K关注 0票数 3

那里

我面临的问题是更改工具栏/动作栏溢出菜单项的文本颜色。我做了太多的搜索和阅读堆栈溢出的答案,但它不能解决我的问题。

现在我要把黑色加入到溢出菜单项中。

我想要的是1。我想把菜单项的颜色改为白色。2.我想更改溢出菜单的宽度以匹配父屏幕。

我的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="AppTheme.Base">
    <!-- Customize your theme here. -->
</style>

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <item name="colorAccent">@color/accent</item>
    <item name="android:textColorPrimary">@color/primary_text</item>
    <item name="android:textColorSecondary">@color/secondary_text</item>
    <item name="android:divider">@color/divider</item>
    <item name="icon">@color/icons</item>
    <item name="actionOverflowMenuStyle">@style/AppTheme.Base.PopupMenu</item>
</style>

<style name="AppTheme.Base.PopupMenu" parent="android:Widget.Holo.Light.ListPopupWindow">
    <item name="android:popupBackground">@color/primary</item>
</style>

请帮我解决这件事..。

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-06 10:15:27

最后,我得到了将黑色转换为白色的代码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public boolean onPrepareOptionsMenu(Menu menu) {
    //return super.onPrepareOptionsMenu(menu);
    try {
        for (int i = 0; i < menu.size(); i++) {
            MenuItem mi = menu.getItem(i);
            mi.setIcon(R.drawable.ic_action_new);
            String title = mi.getTitle().toString();
            Spannable spannable = new SpannableString(title);
            spannable.setSpan(new ForegroundColorSpan(Color.WHITE), 0, spannable.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            mi.setTitle(spannable);
        }
    } catch (Exception ex) {

    }
    return true;
}
票数 1
EN

Stack Overflow用户

发布于 2015-07-06 10:40:17

使用PopupWindow是一种更灵活但不那么可取的方法。

MainActivity.java封装com.chiragjn.stackovefflowing;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import java.util.ArrayList;
import java.util.List;

import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.TextView;

public class MainActivity extends ActionBarActivity {

    String TAG = "MainActivity.java";
    String popUpContents[];
    PopupWindow popupWindow;
    private Toolbar mToolbar;
    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mToolbar = (Toolbar) findViewById(R.id.toolbar);

        setSupportActionBar(mToolbar);
        getSupportActionBar().setDisplayShowHomeEnabled(true);

        List<String> itemsList = new ArrayList<String>();
        itemsList.add("Option 1");
        itemsList.add("Option 2");
        itemsList.add("Option 3");
        itemsList.add("Option 4");
        popUpContents = new String[itemsList.size()];
        itemsList.toArray(popUpContents);
        popupWindow = popupWindow();
    }

    public PopupWindow popupWindow() {

        PopupWindow popupWindow = new PopupWindow(this);
        ListView listView = new ListView(this);
        listView.setAdapter(dogsAdapter(popUpContents));
        popupWindow.setFocusable(true);
        popupWindow.setWidth(WindowManager.LayoutParams.MATCH_PARENT);
        popupWindow.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
        popupWindow.setContentView(listView);
        return popupWindow;
    }

    private ArrayAdapter<String> dogsAdapter(String dogsArray[]) {

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, dogsArray) {

            @Override
            public View getView(int position, View convertView, ViewGroup parent) {

                String item = getItem(position);
                String text = item;


                TextView listItem = new TextView(MainActivity.this);

                listItem.setText(text);
                listItem.setTextSize(22);
                listItem.setPadding(10, 10, 10, 10);
                listItem.setTextColor(Color.WHITE);
                switch(position)
                {
                    case 0:
                        listItem.setBackgroundColor(Color.BLUE);
                        break;
                    case 1:
                        listItem.setBackgroundColor(Color.GREEN);
                        break;
                    case 2:
                        listItem.setBackgroundColor(Color.YELLOW);
                        break;
                    case 3:
                        listItem.setBackgroundColor(Color.RED);
                        break;
                    default:
                    break;
                }
                return listItem;
            }
        };

        return adapter;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle item selection
        switch (item.getItemId()) {
        case R.id.action_options:
            View v = findViewById(R.id.action_options);
            popupWindow.showAsDropDown(v, 0, 0);
            return true;
        default:
            return super.onOptionsItemSelected(item);
        }
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu items for use in the action bar
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main, menu);
        return super.onCreateOptionsMenu(menu);
    }
}

main.xml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<menu 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"
    tools:context="com.chiragjn.stackovefflowing.MainActivity" >

    <item android:id="@+id/action_options"
          android:icon="@android:drawable/ic_menu_more"
          android:title="Overflow Menu"
          app:showAsAction="always"  />
</menu>

然后,您可以在ListView中膨胀您最喜欢的布局并实现ListView onItemClickListner()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31251570

复制
相关文章
TDSQL的2020进化在未来之前,更在未来之后
2020年的最后一天,是国内金融机构的年度重磅——年终决算的日子。这一天,数百家金融机构在腾讯云TDSQL之上完成年终决算。 在过去的1年,TDSQL技术上持续攻坚,同时完成多项国产数据库领域的行业突破……2021,我们也将继续前进,开拓核心基础软件领域的新篇章。 1 TDSQL的进化:在未来之前,更在未来之后 未来,数据库技术将在底层技术超融合方向上持续深化,提供更加高效、便捷、标准统一的数据技术支撑服务。 12月24日,TDSQL正式发布战略升级计划及未来发展战略。全新升级后的腾讯云TDSQL,是涵盖
腾讯云数据库 TencentDB
2021/01/12
6640
HashMap在JDK7.0及之前和JDK8.0及之后区别(一下全告诉你)
前言 我们在学习集合的时候,出去list就是map集合使用比较多,今天主要说一下常用的HashMap底层的进化 干货 jdk7.0之前 数组 + 链表 阈值:30 jdk8.0开始 数组 + 链表 + 二叉树 阈值:30 HashMap底层在1.8之前是基于数组和链表组成 形成一个哈希表 首先数组的优点: 查找元素效率高 由于数组这个数据结构的特点 他们是等大连续 所以当我们想要查找某个元素的时候 只要计算偏移量给可以 时间复杂度是O(n) 链表的优点: 链表
掉发的小王
2022/07/11
4200
Flutter的生命周期
Flutter的生命周期分为两个部分,一个是Flutter本身的组件的生命周期,一个是平台相关的生命周期。
老孟Flutter
2021/11/09
1.7K0
Flutter的生命周期
Stateful 组件的生命周期​
此篇文章介绍 StatefulWidget 组件的生命周期, StatefulWidget 组件的生命周期时非常重要的知识点,就像 Android 中 Activity 的生命周期一样,不仅在以后的工作中经常用到,面试也会经常被问到。
老孟Flutter
2020/12/31
9950
Flutter--Flutter中Widget、App的生命周期
  在App的开发过程中,我们通常都需要了解App以及各个页面的生命周期,方便我们在App进入前台时启动一些任务,在进入后台后暂停一些任务。同时,各个页面的生命周期也很重要,每个页面消失时要做一些内存清理、计时器清除、通知清除等操作。所以,本文主要就是学习一下在flutter开发App的时候,如何去怼App以及各个页面的生命周期进行监听和回调。
mukekeheart
2021/02/02
3.1K0
Java finally语句到底是在return之前还是之后执行?
网上有很多人探讨Java中异常捕获机制try...catch...finally块中的finally语句是不是一定会被执行?很多人都说不是,当然他们的回答是正确的,经过我试验,至少有两种情况下finally语句是不会被执行的:
bear_fish
2018/09/20
1.3K0
Java finally 语句到底是在 return 之前还是之后执行?
今天跟大家分享下Java finally语句的知识。finally隐藏了这样的细节?
互扯程序
2019/11/01
1.2K0
Java finally语句到底是在return之前还是之后执行?
网上有很多人探讨Java中异常捕获机制try…catch…finally块中的finally语句是不是一定会被执行?很多人都说不是,当然他们的回答是正确的,经过我试验,至少有两种情况下finally语句是不会被执行的:
乔戈里
2019/10/28
7860
Java finally语句到底是在return之前还是之后执行?
网上有很多人探讨Java中异常捕获机制try…catch…finally块中的finally语句是不是一定会被执行?
挨踢小子部落阁
2019/08/05
8210
在linux后台运行脚本的方法和命令
后台运行脚本 执行脚本test.sh:./test.sh 中断脚本test.sh:ctrl+c 在1的基础上将运行中的test.sh,切换到后台并暂停:ctrl+z 执行ctrl+z后,test.sh在后台是暂停状态(stopped),使用命令:bg number让其在后台开始运行(“number”是使用jobs命令查到的 [ ]中的数字,不是pid) 直接在后台运行脚本test.sh:./test.sh & 查看当前shell环境中已启动的任务情况:jobs 将test.sh切换到前台运行:fg %number(”number”为使用jobs命令查看到的 [ ] 中的数字,不是pid) 中断后台运行的test.sh脚本:先fg %number切换到前台,再ctrl+c;或是直接kill %number 以上两种在后台运行test.sh的方法,当遇到退出当前shell终端时,后台运行的test.sh也就结束了。这是因为以上两种方法使得test.sh在后台运行时,运行test.sh进程的父进程是当前shell终端进程,关闭当前shell终端时,父进程退出,会发送hangup信号给所有子进程,子进程收到hangup以后也会退出。所以要想退出当前shell终端时test.sh继续运行,则需要使用nohup忽略hangup信号。
大数据流动
2020/06/19
3.6K0
activity结束之后刷新之前的activity的内容
点击添加按钮之后-----弹出一个新的activity--------在新的activity将数据输入保存之后,关闭当前的activity回到之前的activity刷新内容 实现:使用onActivityResult 启动页: btnButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent i
欢醉
2018/01/22
9090
Mysql连接查询时查询条件放在On之后和Where之后的区别
在一次对数据进行统计的时候,需要对两张表进行关联,类似于这样的语句a left join b on a.id = b.id where b.name = xx。发现最终的结果和预期不一致,汇总之后的数据变少了。
翎野君
2023/05/12
1.7K0
Mysql连接查询时查询条件放在On之后和Where之后的区别
在main方法之前,到底执行了什么?
本人在做接口测试的时候,需要用一个公共类来把所有的执行的代码,然后这个公共类有hsot和hosttype等属性来区分各个测试环境,然后在去不同的地方取用例和请求接口。在给这些属性复制的时候,我是通过不同测试环境新建不同的配置文件,然后执行每个环境的时候让只加载需要测试的环境的配置文件来实现管理测试环境的。中间遇到了一些坑,主要就是对java代码执行循序,特别是在main方法之前的代码执行顺序了解不深入导致的,中间有多个继承关系也有点扰乱了思路。下面分享一下自己这个错误的复现步骤。
FunTester
2019/08/30
7350
【漫画】finally到底是在return之前执行还是return之后执行?
比如说上面所示的代码,在try语句里面 i / 0 的话会抛出来异常,这样的话程序就在i / 0这里由于抛出了异常,所以程序不会继续往下去执行try包含的语句了。首先进入到catch语句里面,由于finally语句一定会执行,接下来就会执行finally中的语句,所以就得到了上面的执行结果。
乔戈里
2019/01/23
7170
flutter中对列表的性能优化
下面是一些使用ListView对象呈现列表列表的代码,内部列表的shrinkWrap值设置为 true。shrinkWrap强行评估整个内部列表,允许它请求有限的高度,而不是通常的ListView对象高度,即无穷大!
徐建国
2021/11/30
3.6K0
flutter中对列表的性能优化
Flutter State生命周期
前面说过了StatefullWidget,这节我们来说说State的生命周期,这在flutter开发中是非常重要的。
用户1974410
2022/09/20
8550
Flutter State生命周期
Java 指定日期和日期间隔,返回间隔 之前 | 之后 的日期
public class DateUtil { /** * 指定日期和日期间隔,返回间隔之前的日期 * @param specifiedDay * @param interval * @return */ public static String getSpecifiedDayAgo(String specifiedDay, int interval){ return getSpecifiedDay(specifiedDay
大数据工程师-公子
2019/03/14
2.6K0
perl '-&gt;' 和 '::' 的区别 | 方法和函数的区别
我们知道在 Perl 中,Function 和 Subroutine 这两个名称是可以互换的。但是函数和方法的区别到底是什么呢?
宋天伦
2023/10/20
2920
函数和方法的区别
在javascript中的解释为: 函数(function)是可以执行的javascript代码块,由javascript程序定义或javascript实现预定义。函数可以带有实际参数或者形式参数,用于指定这个函数执行计算要使用的一个或多个值,而且还可以返回值,以表示计算的结果。 方法(method)是通过对象调用的javascript函数。也就是说,方法也是函数,只是比较特殊的函数。假设有一个函数是fn,有一个对象是obj,那么就可以定义一个method。 ---- 函数是一段代码,通过名字来进行调用。
黑泽君
2018/10/11
2.7K0
wait方法和sleep方法的区别
一.概念、原理、区别 Java中的多线程是一种抢占式的机制而不是分时机制。线程主要有以下几种状态:可运行,运行,阻塞,死亡。抢占式机制指的是有多个线程处于可运行状态,但是只有一个线程在运行。        当有多个线程访问共享数据的时候,就需要对线程进行同步。线程中的几个主要方法的比较:        Thread类的方法:sleep(),yield()等        Object的方法:wait()和notify()等 每个对象都有一个机锁来控制同步访问。Synchronized关键字可以和对象的机
老白
2018/03/19
1.1K0

相似问题

Github -将工件提交到存储库

119

Gitlab存储库镜像给Github

13

xcode,提交到github存储库时出错

10

是否可以关闭GitHub/GitLab存储库?

16

推送提交到github存储库引发错误

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文