Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android工具栏溢出菜单将文本颜色和填充菜单更改为屏幕_Android_Android Actionbar_Android Toolbar_Android Actionbar Compat - Fatal编程技术网

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

Android工具栏溢出菜单将文本颜色和填充菜单更改为屏幕,android,android-actionbar,android-toolbar,android-actionbar-compat,Android,Android Actionbar,Android Toolbar,Android Actionbar Compat,那里 我遇到了更改工具栏/操作栏溢出菜单项的文本颜色的问题。我做了太多的谷歌搜索和阅读答案,但它不能解决我的问题 当前我在溢出菜单项中加入黑色 我想要的是 1.我想把菜单项的颜色从黑色改为白色。 2.我想更改溢出菜单的宽度以匹配父屏幕 我的代码: <resources> <!-- Base application theme. --> <style name="AppTheme" parent="AppTheme.Base"> <!-- Cu

那里

我遇到了更改工具栏/操作栏溢出菜单项的文本颜色的问题。我做了太多的谷歌搜索和阅读答案,但它不能解决我的问题

当前我在溢出菜单项中加入黑色

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

我的代码:

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

@颜色/原色
@颜色/原色/深色
@颜色/口音
@颜色/主文本
@颜色/辅助文本
@分色器
@颜色/图标
@style/AppTheme.Base.PopupMenu
@颜色/原色

请帮我解决这个问题


提前感谢

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

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;
}
public boolean onprepareOptions菜单(菜单){
//返回super.onPrepareOptions菜单(菜单);
试一试{
对于(int i=0;i
更灵活但不太受欢迎的方法是使用PopupWindow

MainActivity.java 包com.chiragjn.stackoveflow

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);
    }
}
import java.util.ArrayList;
导入java.util.List;
导入android.graphics.Color;
导入android.os.Bundle;
导入android.support.v7.app.ActionBarActivity;
导入android.support.v7.widget.Toolbar;
导入android.view.Menu;
导入android.view.MenuInflater;
导入android.view.MenuItem;
导入android.view.view;
导入android.view.ViewGroup;
导入android.view.Window;
导入android.view.WindowManager;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.ListView;
导入android.widget.PopupWindow;
导入android.widget.TextView;
公共类MainActivity扩展了ActionBarActivity{
String TAG=“MainActivity.java”;
字符串popUpContents[];
波普温多波普温多;
私有工具栏mToolbar;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mToolbar=(工具栏)findviewbyd(R.id.Toolbar);
设置支持操作栏(mToolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true);
List itemsList=new ArrayList();
项目列表添加(“选项1”);
项目列表添加(“选项2”);
项目列表添加(“选项3”);
项目列表添加(“选项4”);
popUpContents=新字符串[itemsList.size()];
itemsList.toArray(popUpContents);
popupWindow=popupWindow();
}
公共弹出窗口弹出窗口(){
PopupWindow PopupWindow=新的PopupWindow(此);
ListView ListView=新建ListView(此);
setAdapter(dogsAdapter(popUpContents));
popupWindow.setFocusable(真);
popupWindow.setWidth(WindowManager.LayoutParams.MATCH\u父项);
popupWindow.setHeight(WindowManager.LayoutParams.WRAP_内容);
setContentView(listView);
返回弹出窗口;
}
专用阵列适配器dogsAdapter(字符串dogsArray[]){
ArrayAdapter=新的ArrayAdapter(这个,android.R.layout.simple\u list\u item\u 1,dogsArray){
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
String item=getItem(位置);
字符串文本=项目;
TextView listItem=新的TextView(MainActivity.this);
listItem.setText(文本);
listItem.SettexSize(22);
setPadding(10,10,10,10);
listItem.setTextColor(Color.WHITE);
开关(位置)
{
案例0:
listItem.setBackgroundColor(颜色:蓝色);
打破
案例1:
listItem.setBackgroundColor(颜色.绿色);
打破
案例2:
listItem.setBackgroundColor(颜色:黄色);
打破
案例3:
listItem.setBackgroundColor(颜色:红色);
打破
违约:
打破
}
返回列表项;
}
};
返回适配器;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
//处理项目选择
开关(item.getItemId()){
案例R.id.行动选项:
视图v=findViewById(R.id.action\u选项);
弹出窗口显示下拉列表(v,0,0);
返回true;
违约:
返回super.onOptionsItemSelected(项目);
}
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单项充气,以便在操作栏中使用
MenuInflater充气机=getMenuInflater();
充气机。充气(右菜单。主菜单,菜单);
返回super.onCreateOptions菜单(菜单);
}
}
main.xml

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

谢谢您的回答@chiragin,但这里我们需要创建适配器,所有这些都会增加复杂性,而且非常耗时