本文将介绍如何以编程方式更改ActionBar中的MenuItem图标的详细情况,特别是关于如何修改编程的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些
本文将介绍如何以编程方式更改ActionBar中的MenuItem图标的详细情况,特别是关于如何修改编程的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于android – ActionBar在按下时更改menuitem按钮的颜色、android – 在ActionBar中为MenuItem使用选择器、android – 如何以编程方式更改AppCompat v21工具栏主题?、android – 我如何以编程方式更改ActionBar menuitem文本颜色?的知识。
本文目录一览:- 如何以编程方式更改ActionBar中的MenuItem图标(如何修改编程)
- android – ActionBar在按下时更改menuitem按钮的颜色
- android – 在ActionBar中为MenuItem使用选择器
- android – 如何以编程方式更改AppCompat v21工具栏主题?
- android – 我如何以编程方式更改ActionBar menuitem文本颜色?
如何以编程方式更改ActionBar中的MenuItem图标(如何修改编程)
如何以编程方式更改ActionBar中的MenuItem图标?我尝试使用
MenuItem menuItem = (MenuItem)findViewById(R.id.action_settings);menuItem.setIcon(getResources().getDrawable(R.drawable.ic_launcher))
但这不起作用。这是我的代码:
主要活动
package com.test;import android.os.Bundle;import android.support.v7.app.ActionBarActivity;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.Button;public class MainActivity extends ActionBarActivity { private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button)findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { MenuItem menuItem = (MenuItem)findViewById(R.id.action_settings); menuItem.setIcon(getResources().getDrawable(R.drawable.ic_launcher)); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); }}
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=".MainActivity" > <item android:icon="@drawable/action_settings" android:id="@+id/action_settings" android:title="@string/action_settings" android:orderInCategory="100" app:showAsAction="always"/></menu>
activity_main
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="fill_parent" android:layout_width="fill_parent"> <Button android:id="@+id/button" android:text="Set icon" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>
这是我跑步后遇到的例外:
MenuItem menuItem = (MenuItem)findViewById(R.id.action_settings);11-09 19:52:40.471 1735-1735/com.test E/AndroidRuntime﹕ FATAL EXCEPTION: main java.lang.ClassCastException: android.support.v7.internal.view.menu.ActionMenuItemView at com.test.MainActivity$1.onClick(MainActivity.java:19) at android.view.View.performClick(View.java:2485) at android.view.View$PerformClick.run(View.java:9080) at android.os.Handler.handleCallback(Handler.java:587) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:123) at android.app.ActivityThread.main(ActivityThread.java:3683) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:507) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) at dalvik.system.NativeStart.main(Native Method)
答案1
小编典典您不能在onCreate()的菜单项上使用findViewById(),因为菜单布局尚未膨胀。您可以创建一个全局Menu变量,并在onCreateOptionsMenu()中对其进行初始化,然后在onClick()中使用它。
private Menu menu;
在您的onCreateOptionsMenu()中
this.menu = menu;
在按钮的onClick()方法中
menu.getItem(0).setIcon(ContextCompat.getDrawable(this, R.drawable.ic_launcher));
android – ActionBar在按下时更改menuitem按钮的颜色
如何在按下时更改menuitem按钮的颜色.我使用SherlockActionBar,但是当它被按下时,它会改变颜色,使其对我的设计不太好.我需要改变这种颜色.
更新:
关键是当我设置drawable我放在背景上并按下按钮然后更改我的drawable附近的bckground更改.我可以改变drawable,但背景仍会改变它的颜色到丑陋的颜色.
解决方法:
您可以通过在主题中设置actionBarItemBackground属性来更改背景.这应该是一个状态列表drawable,它反映了压缩和聚焦等状态.
android – 在ActionBar中为MenuItem使用选择器
我正在使用ActionBarSherlock.我有一个MenuItem,我想使用只有MenuItem的自定义选择器,而不是ActionBar中的其他选择器.这是菜单代码:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/menu_include_location"
android:icon="@drawable/icon_place_selector"
android:showAsAction="always"
android:title="@string/menu_include_location"/>
<item
android:id="@+id/menu_send"
android:icon="@drawable/ic_send"
android:showAsAction="ifRoom|withText"
android:title="@string/menu_send"/>
</menu>
这是icon_place_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/location_place" android:state_pressed="false"/>
<item android:drawable="@drawable/location_no_gradient" android:state_pressed="true"/>
</selector>
问题是在MenuItem中,图标只是它的一小部分.这是显示内容的屏幕截图.整个背景应该改变,而不仅仅是图标.我怎么做?
解决方法:
您可以通过在代码中设置自定义ActionView来更改特定操作栏项的选择器:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getSupportMenuInflater().inflate(R.menu.activity_main, menu);
MenuItem menuItem = menu.findItem(R.id.menu_include_location);
ImageView image = new ImageView(this);
image.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT));
image.setPadding(16, 0, 16, 0);
image.setimageResource(R.drawable.ic_launcher);
image.setBackgroundResource(R.drawable.icon_place_selector);
image.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// ...
}
});
menuItem.setActionView(image);
return true;
}
如果要更改所有操作栏项的选择器,请应用这些样式:
<style name="AppTheme" parent="@style/Theme.Sherlock">
<item name="android:selectableItemBackground">@drawable/icon_place_selector</item>
<item name="android:actionBarItemBackground">@drawable/icon_place_selector</item>
</style>
android – 如何以编程方式更改AppCompat v21工具栏主题?
这是我的工具栏xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
app:contentInsetEnd="0dp"
app:contentInsetStart="0dp"
android:layout_height="@dimen/toolbar_height"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
android:background="@color/primary_color">
</android.support.v7.widget.Toolbar>
我想以编程方式更改app:theme.
我该怎么做呢?
解决方法:
您可以通过编程或样式执行此操作:
Toolbar toolbar; // your toolbar
toolbar.setBackgroundColor(newColor); // i don't tested this method. Write if it's not working
toolbar.setTitleTextColor(titleColor); // if toolbar is white set title to black, if toolbar is black set title to white
或者你可以用风格来做:
添加attrs.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="toolbarStyle" format="reference"/>
</resources>
现在更改toolbar.xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
app:contentInsetEnd="0dp"
app:contentInsetStart="0dp"
android:layout_height="@dimen/toolbar_height"
app:theme="?attr/toolbarStyle"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
android:background="@color/primary_color">
</android.support.v7.widget.Toolbar>
在styles.xml中(如果你没有这个创建它):
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyStyle.Dark" parent="AppCompat.Theme">
<item name="toolbarStyle">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>
</style>
<style name="MyStyle.Light" parent="AppCompat.Theme.Light">
<item name="toolbarStyle">@style/ThemeOverlay.AppCompat.Light.ActionBar</item>
</style>
</resources>
如果选择第二种方法(带样式),则必须重新启动活动并在super.onCreate()之前使用setTheme方法
我希望我帮助过你.
android – 我如何以编程方式更改ActionBar menuitem文本颜色?
谢谢
public void catalogClick(MenuItem item){ //highlight menuitem etc. }
解决方法
http://developer.android.com/guide/topics/ui/actionbar.html#Style
检查android:actionMenuTextColor为文本定义样式资源.
关于如何以编程方式更改ActionBar中的MenuItem图标和如何修改编程的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于android – ActionBar在按下时更改menuitem按钮的颜色、android – 在ActionBar中为MenuItem使用选择器、android – 如何以编程方式更改AppCompat v21工具栏主题?、android – 我如何以编程方式更改ActionBar menuitem文本颜色?的相关知识,请在本站寻找。
本文标签: