5

Tôi đang cố thêm hành động chia sẻ vào thanh công cụ của mình. Thanh công cụ được coi là màu cam (hoặc trong suốt như thế nào trong trường hợp này) với văn bản màu trắng và các biểu tượng, vì vậy tôi đang sử dụng quan điểm này như Toolbar:Thanh công cụ ShareActionProvider chủ đề luôn tối tối

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/toolbar" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:minHeight="?attr/actionBarSize" 
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
    tools:ignore="UnusedAttribute" /> 

Ngoài ra, đây là cách tuyên bố chủ đề ứng dụng của tôi trông giống như:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

Không có vấn đề làm thế nào tôi thay đổi phong cách này là những gì tôi nhận được:

enter image description here

Làm cách nào để thuyết phục ShareActionProvider nhận được chủ đề Light?

+0

Tôi nghĩ giúp cho bạn http://stackoverflow.com/questions/28591447/style-appcompat-v7- toolbar-menu-background – mustafasevgi

+1

Điều đó không hoạt động –

+0

Bạn có thể thử ứng dụng: theme = "@ style/ThemeOverlay.AppCompat.Light" nhưng nó sẽ làm cho mũi tên lên và biểu tượng menu tối. – Harry

Trả lời

3

giải pháp của tôi là dựa trên thư viện hỗ trợ v7, thanh công cụ, ActionBarActivity, Android Studio

1- loại bỏ app:popupTheme="@style/ThemeOverlay.AppCompat.Light"

2- chắc chắn chủ đề cơ sở của bạn là Theme.AppCompat.Light.NoActionBar

3 đi để mã gốc của ShareActionProvider bằng cách gõ "ShareActionProvider" bất cứ nơi nào trong mã của bạn sau đó nhập khẩu một v7 sau đó nhắm chuột vào nó sau đó (ctrl + nhấp chuột trái)

4- sao chép mã trong đó d dán nó vào một file java mới trong bạn Directory Project

5 đi để ShareActionProvider của riêng bạn và loại bỏ nhập khẩu này nếu bạn có nó import android.support.v7.appcompat.R

6- cung cấp biểu tượng chia sẻ của riêng bạn vì một mặc định là màu đen Drawable myDrawable = mContext.getResources().getDrawable(R.drawable.ic_share); activityChooserView.setExpandActivityOverflowButtonDrawable(myDrawable);

7- đi đến hoạt động của bạn và loại bỏ việc nhập khẩu bạn đã thực hiện trong bước 3 (để sử dụng tập tin riêng của bạn)

8- đi của bạn onCreateOptionsMenu nó phải như thế này:

@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    getMenuInflater().inflate(R.menu.menu_main, menu); 

    MenuItem item = menu.findItem(R.id.menu_item_share); 

    mShareActionProvider = new ShareActionProvider(MainActivity.this); 
    MenuItemCompat.setActionProvider(item , mShareActionProvider); 

    Intent shareIntent = new Intent(); 
    shareIntent.setAction(Intent.ACTION_SEND); 
    shareIntent.putExtra(Intent.EXTRA_TEXT, "Hello World"); 
    shareIntent.setType("text/plain"); 
    mShareActionProvider.setShareIntent(shareIntent); 

    return true; 
} 

9 bước cuối cùng là đừng quên chỉnh sửa menu.xml bạn

app:actionProviderClass= 
      "com.yourPackageName.ShareActionProvider" /> 
+0

Điều này không thể hoạt động. lớp học phụ thuộc vào một số lớp khác trong android không được công khai –

1

Đây là những gì tôi đã làm và nó làm việc. tôi muốn có một nền trắng trong ShareActionProvider với nó văn bản là đen

<android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      app:theme="@style/MainTheme" 
      app:layout_collapseMode="pin"/> 

chủ đề My

<style name="MainTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="colorPrimary">@color/md_white_1000</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
    <item name="android:textColorPrimary">#ffffff</item> 
    <item name="android:textColorSecondary">#ffffff</item> 
    <item name="android:textColor">@color/md_black_1000</item> 
    <item name="listPopupWindowStyle">@style/PopupListStyle</item> 
</style> 

<style name="PopupListStyle" parent="@style/Widget.AppCompat.Light.ListPopupWindow"> 
    <item name="android:popupBackground">#ffffff</item> 
</style> 
Các vấn đề liên quan