- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个这样的背景图:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:bottom="80dp"
android:id="@+id/card_background">
<shape>
<solid android:color="@color/x_card_color_pink"
android:height="100dp"/>
<corners
android:topLeftRadius="10dp"
android:topRightRadius="10dp"/>
</shape>
</item>
<item android:top="120dp">
<shape>
<solid android:color="@color/white"
android:height="100dp"/>
<corners
android:bottomLeftRadius="10dp"
android:bottomRightRadius="10dp"/>
</shape>
</item>
</layer-list>
我想改变card_background
的颜色。当我从 onCreate
Activity 中设置新颜色时,它起作用了:
LayerDrawable layerDrawable = (LayerDrawable) ContextCompat.getDrawable(this, R.drawable.card_background);
GradientDrawable gradientDrawable = (GradientDrawable) layerDrawable.findDrawableByLayerId(R.id.card_background);
gradientDrawable.setColor(0xFFEBC51B); //Successfully set to yellow from activity
但是,如果尝试从也显示背景的 fragment 中设置它,我无法改变它。我希望稍后能够在 clickhandler 中执行此操作,但现在我在 fragment onCreate
中使用相同的代码:
LayerDrawable layerDrawable = (LayerDrawable) ContextCompat.getDrawable(getActivity(), R.drawable.card_background);
GradientDrawable gradientDrawable = (GradientDrawable) layerDrawable.findDrawableByLayerId(R.id.card_background);
gradientDrawable.setColor(0xFF5ABC63); //Fail to set to green from fragment
我在想,因为我在更新 fragment 的同时显示 fragment ,所以我必须刷新它还是什么?我尝试了方法 invalidateSelf
但没有效果。
关于如何更改 Fragment 的背景颜色有什么想法吗?
最佳答案
哦,我找到了解决办法:
LayerDrawable layerDrawable = (LayerDrawable) ContextCompat.getDrawable(getActivity(), R.drawable.card_background);
GradientDrawable gradientDrawable = (GradientDrawable) layerDrawable.findDrawableByLayerId(R.id.card_background);
gradientDrawable.setColor(0xFF5ABC63);
RelativeLayout layout = (RelativeLayout) rootView.findViewById(R.id.card_layout);
layout.setBackground(layerDrawable);
如果我再次将可绘制对象设置为我的布局,它会更新背景。
关于java - 在 GradientDrawable 上设置颜色不适用于 Fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34428216/
我正在尝试调试 ExpandableListAdapter.getChildView 遇到的问题。 我定义了一个 Drawable,其形状包含渐变和一个半径为 1 的角作为列表项的背景 - 那里没有什
在我的应用程序中,我试图从代码中绘制一个 gradientBackground。我的目标是让这个背景动态。 现在我的问题是下面这个函数是我正在谈论的函数,并且有一个参数 int[] colors Gr
我有以下 GradientDrawable 的 xml。如何以编程方式更改角度? 最佳答案 GradientDrawable 有一个方法叫做:.setOrientation(Gradie
根据我的阅读,您可以使用 gradientDrawable并为其设置三种颜色,例如: 但是如果我想要三种以上的颜色,不仅如此,我还希望能够设置每种颜色的放置位置(重量/百分比)? 是否可以使用 AP
我可以使用下面的 XML 就好了 渐变效果很好 我正在尝试仅使用代码(无 XML)来做同样的事情 int colors[] = { 0xff255779 , 0xff3e74
当您使用具有笔划宽度的 xml 将可绘制对象分配给 View 时,它工作正常。当我尝试在运行时动态分配它并更改笔划宽度时,它似乎不起作用。 您可以在快照中找到结果和代码here 基本上, 左 View
我有以下渐变(动态生成): GradientDrawable dynamicDrawable = new GradientDrawable(); dynamicDrawable.set
我试图让 GradientDrawable 动态改变它的渐变中心。我有简单的测试 View ,它只是用渐变绘制来绘制背景。然后我写了这样的代码: public class TestActivity e
首先,我将绿色设置为 View mIcon 的背景, View mIcon = findViewById(R.id.xxx); GradientDrawable gdraw = (GradientDr
我有这个图层列表:
首先,我将绿色设置为 View mIcon 的背景, View mIcon = findViewById(R.id.xxx); GradientDrawable gdraw = (GradientDr
我有一个 xml 文件,里面有一个选择器,它定义了按钮的不同状态: 然后在我的每个可绘制 xml 中,我都有关于按钮外观的信息: 对于我应用程序中的大多数按钮,我只应用第一个 x
我在为我的小部件设置动态背景时遇到问题: 我的首选项返回用户选择的颜色,我想将它应用到小部件但具有渐变效果。所以这就是我现在的位置: 我的 widget.xml: ... 我的服务.java: p
我尝试使用 GradientDrawable 为某些背景和按钮设置渐变。可悲的是documentation不是很详细。 配置渐变的主要属性有哪些?我了解 start 和 endcolor 但其他一些属
如何使用角度参数自定义 Brush.linearGradient(),例如 O、45、90、135... 或其他任何角度? 谢谢。 最佳答案 为 LinearGradient 设置任意角度似乎是个好主
这是我想做的:我有一个小部件,我想根据用户选择的颜色设置它的背景。它必须是一个渐变。背景是通过设置linearLayout的背景来设置的。为了测试,我做了一个虚拟背景: remoteViews.set
我有一个这样的背景图: 我想改变card_background 的颜色。当
我是 Android 开发新手,对 ShapeDrawable 和 GradientDrawable 类有些困惑。有什么区别? 最佳答案 形状定义了矩形、椭圆形、线形或环形等形状。渐变用于定义形状的外
我正在创建一个自定义按钮,我正在使用 Drawable.setTintList 为默认、按下和禁用状态设置颜色。 我实际上想为按钮添加边框,我正在尝试这样做: val d = newGradientD
我在 Android 中设置布局颜色时遇到了一个烦人的问题; 这就是我的元素在layout.xml中的样子(LinearLayout中的FrameLayout(绘制元素)):
我是一名优秀的程序员,十分优秀!