我使用Google的方法將投射按鈕添加到我的應用,但默認爲白色圖標,這對我的白色菜單欄是不可見的。如何將Cast圖標的顏色更改爲黑色?更改Chromecast投射圖標顏色
回答
如果僅僅是由於風格(暗vs光)造成的,如果風格被正確定義(即延伸正確的主題,暗vs光),你應該沒問題。對於一般造型,請查看post,如果這樣不能解決您的問題,請回來告訴我們。
我自己也遇到過這個問題,並通過將android:theme
和app:popuptheme
的值更改爲@style/ThemeOverlay.AppCompat.Dark.ActionBar
來解決此問題。
參見下面的示例代碼:
<android.support.v7.widget.Toolbar
android:id="@+id/my_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="#4dffffff"
android:elevation="4dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>
我擴展MediaRouteButton。見下面的代碼。然後,我可以叫applyTint()和它的顏色應用到的RemoteIndicatorDrawable
public class ColorableMediaRouteButton extends MediaRouteButton {
protected Drawable mRemoteIndicatorDrawable;
public ColorableMediaRouteButton(Context context) {
super(context);
}
public ColorableMediaRouteButton(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ColorableMediaRouteButton(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public void setRemoteIndicatorDrawable(Drawable d) {
mRemoteIndicatorDrawable = d;
super.setRemoteIndicatorDrawable(d);
}
public void applyTint(int color) {
Drawable wrapDrawable = DrawableCompat.wrap(mRemoteIndicatorDrawable);
DrawableCompat.setTint(wrapDrawable, color);
}
}
所有國家我剛剛延長MediaRouteActionProvider這樣的:
public class ThemeableMediaRouteActionProvider extends MediaRouteActionProvider {
public ThemeableMediaRouteActionProvider(Context context) {
super(context);
}
@Override
public MediaRouteButton onCreateMediaRouteButton() {
MediaRouteButton button = super.onCreateMediaRouteButton();
colorWorkaroundForCastIcon(button);
return button;
}
@Nullable
@Override
public MediaRouteButton getMediaRouteButton() {
MediaRouteButton button = super.getMediaRouteButton();
colorWorkaroundForCastIcon(button);
return button;
}
private void colorWorkaroundForCastIcon(MediaRouteButton button) {
if (button == null) return;
Context castContext = new ContextThemeWrapper(getContext(), android.support.v7.mediarouter.R.style.Theme_MediaRouter);
TypedArray a = castContext.obtainStyledAttributes(null,
android.support.v7.mediarouter.R.styleable.MediaRouteButton, android.support.v7.mediarouter.R.attr.mediaRouteButtonStyle, 0);
Drawable drawable = a.getDrawable(
android.support.v7.mediarouter.R.styleable.MediaRouteButton_externalRouteEnabledDrawable);
a.recycle();
DrawableCompat.setTint(drawable, getContext().getResources().getColor(R.color.primary));
drawable.setState(button.getDrawableState());
button.setRemoteIndicatorDrawable(drawable);
}
R.color.primary是什麼顏色我想了。
則只需更換actionProviderClass菜單從MediaRouteActionProvider你這樣的:
<item
android:id="@+id/media_route_menu_item"
android:title="@string/media_route_menu_title"
bwq:actionProviderClass="tv.test.playback.chromecast.ThemeableMediaRouteActionProvider"
bwq:showAsAction="always">
</item>
我試過這個官方解決方案([https://developers.google.com/cast/docs/android_sender_advanced#customize_cast_button](https://developers.google.com/cast/docs/android_sender_advanced#customize_cast_button)),但突然停止加工。 所以,我發現你的聰明的解決方案,我真的很喜歡它作爲一個臨時修復,謝謝:) –
絕對簡單答案在這裏:
https://developers.google.com/cast/docs/android_sender_advanced#customize_cast_button
所以只是複製mediaRouteTheme從鏈接到你的ap p的主題和接下來的兩個styles.xml樣式。
- 1. 將圖像投射到ChromeCast
- 2. 更改Chromecast ActionBar圖標
- 3. jzy3d更改顏色映射
- 4. 在Chromecast上投射文字視圖
- 5. SAPUI5更改圖標的顏色
- 6. 更改地圖標記顏色
- 7. 基於值更改圖標顏色
- 8. extjs更改圖表軸標籤顏色
- 9. 更改狀態欄圖標顏色
- 10. 更改UITabBar圖標的顏色
- 11. Javascript,更改google地圖標記顏色
- 12. 鼠標懸停更改圖片顏色
- 13. SlidingTabLayout更改顏色選擇圖標
- 14. 更改特定圖標的顏色NavigationDrawer
- 15. 如何更改searchview圖標的顏色?
- 16. 更改圖標的顏色W/COMPAT庫
- 17. Android - 更改菜單圖標的顏色
- 18. 更改moreNavigationController圖標的顏色
- 19. 更改系統托盤圖標顏色
- 20. 如何更改圖標的顏色?
- 21. 更改google地圖標記顏色
- 22. 如何更改光標顏色而不更改文字顏色?
- 23. Chart.js更改標籤顏色
- 24. 更改GridViewColumn標題顏色
- 25. 更改顏色標題欄
- 26. 更改圖標的顏色以及div內鏈接的顏色?
- 27. 如何更改UIActivityViewController中的文本顏色和圖標顏色
- 28. 更改按鈕顏色時的圖標顏色
- 29. 更改圖標VS化妝圖標的顏色在許多顏色
- 30. 更改ImagePlus圖像顏色
謝謝!通過將主題更改爲Theme.AppCompat.Light來解決此問題。但是,這將我的應用中的默認文本顏色更改爲黑色。我如何覆蓋它以將默認文本顏色設置回白色? – opticon
聽起來像你有一些相互矛盾的樣式。 Theme.AppCompat.Light表示您使用的是輕量級主題,因此顏色文本會變爲黑色,以使其在淺色背景中可見。如果你的背景主題很暗,那麼你不應該使用這個主題。如果由於您的要求而無法修復主題,則需要在相同的帖子中使用另一種方法來提供適當顏色的PNG或將xml放入應用中,但將指針切換爲dar vs光。 –