我认为这与proguard有关;请参阅帖子底部的编辑。
我正在使用eclipse构建一个小的Android应用程序。
当我运行我的应用程序时(点击eclipse中的绿色运行按钮,我的手机通过USB连接到我的电脑),我的分享按钮如下所示:
..这就是我想要的。
当我提交 - >导出我的应用并使用adb install
安装APK(或者如果我将新APK上传到Play商店并安装更新),我的分享按钮如下所示:
......这是不幸的。
如何在导出的应用中将按钮显示为白色?
我的代码中的一些片段:
菜单项:
<item
android:id="@+id/menu_item_share"
android:title="@string/action_share"
mysapp:showAsAction="ifRoom"
myapp:actionProviderClass="android.support.v7.widget.ShareActionProvider" />
我的res / values / styles.xml:
<!--
Base application theme, dependent on API level. This theme is replaced
by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-->
<style name="AppBaseTheme" parent="Theme.AppCompat.Light">
<!--
Theme customizations available in newer API levels can go in
res/values-vXX/styles.xml, while customizations related to
backward-compatibility can go here.
-->
</style>
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style>
<style name="vertical_space">
<item name="android:layout_marginTop">10dp</item>
</style>
RES /值-V14 / styles.xml:
<!--
Base application theme for API 14+. This theme completely replaces
AppBaseTheme from BOTH res/values/styles.xml and
res/values-v11/styles.xml on API 14+ devices.
-->
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- API 14 theme customizations can go here. -->
</style>
我还有一个带有parent="Theme.AppCompat.Light.DarkActionBar"
的values-v11 / styles.xml。我没有值-v21目录。
修改1 :
我试图考虑导出应用程序时的更改,而不仅仅是从eclipse运行它。
一种可能性是我在project.properties
中启用了proguard:
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
Proguard仅在出口时有效,对吗?不确定这是否可以解释。
编辑2 :
我在project.properties
中注释掉了proguard.config行,问题就消失了,即导出应用时分享按钮是白色的。但是,我想启用proguard。如何在导出时启用proguard并保持按钮为白色?
答案 0 :(得分:1)
根据外观不应该是
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!--
Theme customizations available in newer API levels can go in
res/values-vXX/styles.xml, while customizations related to
backward-compatibility can go here.
-->
</style>
答案 1 :(得分:1)
不确定为什么会看到这种行为。但是,您可以尝试明确定义共享drawable的色调颜色。像这样:
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
<!-- Defining actionModeShareDrawable is not really required
<item name="android:textColorSecondary">#b3ffffff</item>
</style>
据我所知,属性textColorSecondary
引用的颜色用于对共享绘图进行着色。因此,明确颜色可能会解决您的问题。如果你想让我提一下我是如何挑出这个属性的(我还没有测试它是否有效:)),请告诉我。
修改强>
浏览到文件夹(SDK-INSTALLATION)/ extras / android / support / v7 / appcompat / res / drawable-xhdpi。
复制abc_ic_menu_share_mtrl_alpha.png
并将其粘贴到您的应用程序的res/drawable-xhdpi
文件夹中。将其名称更改为 - changed_menu_share.png
。
您的主题现在应该如下:
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
<item name="actionModeShareDrawable">@drawable/changed_menu_share</item>
</style>
这应该使Tintmanager忽略这个drawable,即它总是你想要的颜色 - 在这种情况下,#ftffff。另请注意,我们不再覆盖textColorSecondary
属性。