导出应用后,共享按钮会更改颜色

时间:2014-12-13 14:14:30

标签: android eclipse proguard android-theme android-sharing

我认为这与proguard有关;请参阅帖子底部的编辑。

我正在使用eclipse构建一个小的Android应用程序。

当我运行我的应用程序时(点击eclipse中的绿色运行按钮,我的手机通过USB连接到我的电脑),我的分享按钮如下​​所示:

white share button

..这就是我想要的。

当我提交 - >导出我的应用并使用adb install安装APK(或者如果我将新APK上传到Play商店并安装更新),我的分享按钮如下​​所示:

black share button

......这是不幸的。

如何在导出的应用中将按钮显示为白色?

我的代码中的一些片段:

菜单项:

<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并保持按钮为白色?

2 个答案:

答案 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属性。