0

これはプロガードに関連していると思います。投稿の下部にある編集を参照してください。

私は日食を使って小さな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から実行するときの違いを考えようとしています。

1つの可能性は、私がプロガードを有効にしているということですproject.properties:

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

Proguard はエクスポート時にのみアクティブになりますよね? それが説明になるかどうかはわかりません。

編集2

proguard.config の行をコメントアウトしたproject.propertiesところ、問題はなくなりました。つまり、アプリをエクスポートすると、共有ボタンが白くなります。ただし、プロガードを有効にしたいと思います。エクスポート時にプロガードを有効にしてボタンを白く保つにはどうすればよいですか?

4

2 に答える 2

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-xhdpichanged_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 に答える