android - 如何从 ActionBar 中的 MenuItem 中删除填充

标签 android

我尝试删除 MenuItem 填充超过 4 小时,但我绝对无法独自完成。

我有两种尝试过的方法。第一个是获取 My menuItem 及其 View 并将 Padding 设置为 0:

MenuItem back = menu.findItem(R.id.back);
        back.setActionView(R.id.testando);

View bView = (View) back.getActionView();
bView.setPadding(0, 0, 0, 0);

这种情况下的问题是我的 bView 总是返回 NULL,我不知道为什么,因为 back 已经实例化了...

另一种方法是获取我的 MenuItem 并设置一个带有填充 0 的自定义 View :

MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.browser_menu, menu);

MenuItem back = menu.findItem(R.id.back);
back.setActionView(R.id.testando);

testando XML 文件:

<ActionMenuItemView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/testando"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:gravity="center"
    android:focusable="true"
    android:paddingTop="0dip"
    android:paddingBottom="0dip"
    android:paddingStart="0dip"
    android:paddingEnd="0dip"
    android:textAppearance="?android:attr/actionMenuTextAppearance"
    android:textColor="?android:attr/actionMenuTextColor"
    style="?android:attr/actionButtonStyle" />

本例中的问题是由ResourcesNotFoundException引起的

06-17 15:35:39.975: E/AndroidRuntime(9561): FATAL EXCEPTION: main
06-17 15:35:39.975: E/AndroidRuntime(9561): android.content.res.Resources$NotFoundException: Resource ID #0x7f0a0046 type #0x12 is not valid
06-17 15:35:39.975: E/AndroidRuntime(9561):     at android.content.res.Resources.loadXmlResourceParser(Resources.java:2112)
06-17 15:35:39.975: E/AndroidRuntime(9561):     at android.content.res.Resources.getLayout(Resources.java:858)
06-17 15:35:39.975: E/AndroidRuntime(9561):     at android.view.LayoutInflater.inflate(LayoutInflater.java:394)
06-17 15:35:39.975: E/AndroidRuntime(9561):     at com.android.internal.view.menu.MenuItemImpl.setActionView(MenuItemImpl.java:566)
06-17 15:35:39.975: E/AndroidRuntime(9561):     at br.com.facilit.target.app.android.BrowserActivity.onCreateOptionsMenu(BrowserActivity.java:36)
06-17 15:35:39.975: E/AndroidRuntime(9561):     at android.app.Activity.onCreatePanelMenu(Activity.java:2444)
06-17 15:35:39.975: E/AndroidRuntime(9561):     at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:388)
06-17 15:35:39.975: E/AndroidRuntime(9561):     at com.android.internal.policy.impl.PhoneWindow.invalidatePanelMenu(PhoneWindow.java:739)
06-17 15:35:39.975: E/AndroidRuntime(9561):     at com.android.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:2833)
06-17 15:35:39.975: E/AndroidRuntime(9561):     at android.os.Handler.handleCallback(Handler.java:605)
06-17 15:35:39.975: E/AndroidRuntime(9561):     at android.os.Handler.dispatchMessage(Handler.java:92)
06-17 15:35:39.975: E/AndroidRuntime(9561):     at android.os.Looper.loop(Looper.java:137)
06-17 15:35:39.975: E/AndroidRuntime(9561):     at android.app.ActivityThread.main(ActivityThread.java:4424)
06-17 15:35:39.975: E/AndroidRuntime(9561):     at java.lang.reflect.Method.invokeNative(Native Method)
06-17 15:35:39.975: E/AndroidRuntime(9561):     at java.lang.reflect.Method.invoke(Method.java:511)
06-17 15:35:39.975: E/AndroidRuntime(9561):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
06-17 15:35:39.975: E/AndroidRuntime(9561):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
06-17 15:35:39.975: E/AndroidRuntime(9561):     at dalvik.system.NativeStart.main(Native Method)

最佳答案

MenuItem#setActionView 将布局作为其参数而不是 id。以上只是一个问题。

我建议您创建一个扩展 ImageView 的类,然后将类路径放在菜单 Xml 中菜单项的 android:actionViewClass 属性中。

参见:https://gist.github.com/slightfoot/5835584

关于android - 如何从 ActionBar 中的 MenuItem 中删除填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17154557/

相关文章:

Android AccountPicker - 找不到处理 Intent 的 Activity

android - Dagger 看不到我自己生成的依赖

android - 使用 Ionic 应用程序在 Android 上出现 Firebase 身份验证网络错误

java - 就位比例矩阵

java - 以最小的质量损失减小 android 中的视频大小

android - 在react native中完成工作后如何关闭webview

android - fontFamily 属性不能通过 textAppearance 工作

java - HoloEverywhere SeekBar ClassCastException

android - 任何用于本地化 Android 应用程序的协作工具/网站?

java - 这行代码应该绘制一个图表。但它并没有策划任何事情。它只是显示轴