0

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

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

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

白色分享按钮

..这就是我想要的。

当我归档 -> 导出我的应用程序并使用安装 APK adb install(或者如果我将新 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/values-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>

我还有一个 values-v11/styles.xml 和parent="Theme.AppCompat.Light.DarkActionBar". 我没有 values-v21 目录。

编辑 1

我正在尝试考虑导出应用程序与仅从 Eclipse 运行它时发生的变化。

一种可能性是我在以下位置启用了 proguard project.properties

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

Proguard 仅在导出时有效,对吗?不确定这是否可以解释。

编辑 2

我注释掉了 proguard.config 行,project.properties问题就消失了,即导出应用程序时共享按钮是白色的。但是,我希望启用 proguard。导出时如何启用proguard并保持按钮为白色?

4

2 回答 2

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>
于 2014-12-13T14:27:11.603 回答
1

不知道为什么你会看到这种行为。但是,您可以尝试为共享可绘制对象显式定义色调颜色。像这样的东西:

<!-- 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 忽略此可绘制对象,即它将始终是您想要的颜色 - 在这种情况下,#ffffff。另请注意,我们不再覆盖textColorSecondary属性。

于 2014-12-17T17:36:37.253 回答