我正在使用RangeSeekBar为3种情况设置一些值(即绿色=OK,琥珀色=警告,红色=撤离)...我正在使用xml绘图来设置背景
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="#27F70C"
android:centerColor="#FFBF00"
android:endColor="#FC0505"
android:angle="0" />
<corners android:radius="0px" />
<stroke
android:width="2dp"
android:color="#70555555" />
<stroke
android:width="0dp"
android:color="#70555555" />
</shape>
我知道我可以通过编程更改渐变,但如何缩小起始颜色并增加结束颜色?有人能解决这个问题吗?
谢谢
我就是这样做的,以防有人想要一个完整的解决方案。。。感谢@Dave Morrissey的帮助:)
XML代码将被
<RelativeLayout
android:id="@+id/layout4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center">
<LinearLayout
android:id="@+id/colorsLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<View
android:id="@+id/bgGreen"
android:layout_width="100dp"
android:layout_height="25dp"
android:background="#27F70C"/>
<View
android:id="@+id/bgAmber"
android:layout_width="100dp"
android:layout_height="25dp"
android:background="#FFBF00"/>
<View
android:id="@+id/bgRed"
android:layout_width="100dp"
android:layout_height="25dp"
android:background="#FC0505"/>
</LinearLayout>
<LinearLayout
android:id="@+id/seekBarLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</LinearLayout>
</RelativeLayout>
Java代码就像
LinearLayout ll = (LinearLayout)findViewById(R.id.colorsLayout);
View viewGreen = (View)findViewById(R.id.bgGreen);
View viewAmber = (View)findViewById(R.id.bgAmber);
View viewRed = (View)findViewById(R.id.bgRed);
int sbMaxVal = 4999;
//Create RangeSeekBar as Integer range between 0 and sbMaxVal
seekBar = new RangeSeekBar(0, sbMaxVal, this);
seekBar.setNotifyWhileDragging(true);
//Add RangeSeekBar to Pre-defined layout
ViewGroup layout = (ViewGroup) findViewById(R.id.seekBarLayout);
layout.addView(seekBar);
//Set the onRangeChangeListener for the seekBar
seekBar.setOnRangeSeekBarChangeListener(new RangeSeekBar.OnRangeSeekBarChangeListener<Integer>() {
@Override
public void onRangeSeekBarValuesChanged(RangeSeekBar<?> bar, Integer minValue, Integer maxValue) {
int width = ll.getWidth();
int minVal = (int) Math.floor((Integer.parseInt(amberValue)*width)/sbMaxVal);
int maxVal = (int) Math.floor((Integer.parseInt(redValue)*width)/sbMaxVal);
int wg = minVal;
int wy = maxVal-minVal;
int wr = ll.getWidth()-wg-wy;
//Change the length of background views green,amber,red
LinearLayout.LayoutParams paramsGreen = (LinearLayout.LayoutParams)
viewGreen.getLayoutParams();
paramsGreen.width = wg;
viewGreen.setLayoutParams(paramsGreen);
LinearLayout.LayoutParams paramsAmber = (LinearLayout.LayoutParams)
viewAmber.getLayoutParams();
paramsAmber.width = wy;
viewAmber.setLayoutParams(paramsAmber);
LinearLayout.LayoutParams paramsRed = (LinearLayout.LayoutParams)
viewRed.getLayoutParams();
paramsRed.width = wr ;
viewRed.setLayoutParams(paramsRed);
}
});
线性渐变有一个可选的参数叫做位置——这些位置告诉不同颜色的部分有多长。
@miroslavign在这里发布了一个函数,它似乎可以通过代码(而不是XML)为视图设置渐变背景——我还没有尝试过,但它看起来很有前途。只需将其更改为您的颜色,并根据Seekbar设置渐变位置。
复制粘贴在这里的人谁不喜欢以下链接:
private void FillCustomGradient(View v) {
final View view = v;
Drawable[] layers = new Drawable[1];
ShapeDrawable.ShaderFactory sf = new ShapeDrawable.ShaderFactory() {
@Override
public Shader resize(int width, int height) {
LinearGradient lg = new LinearGradient(
0,
0,
0,
view.getHeight(),
new int[] {
getResources().getColor(R.color.color1), // please input your color from resource for color-4
getResources().getColor(R.color.color2),
getResources().getColor(R.color.color3),
getResources().getColor(R.color.color4)},
new float[] { 0, 0.49f, 0.50f, 1 }, // positions
Shader.TileMode.CLAMP);
return lg;
}
};
PaintDrawable p = new PaintDrawable();
p.setShape(new RectShape());
p.setShaderFactory(sf);
p.setCornerRadii(new float[] { 5, 5, 5, 5, 0, 0, 0, 0 });
layers[0] = (Drawable) p;
LayerDrawable composite = new LayerDrawable(layers);
view.setBackgroundDrawable(composite);
}
尝试在范围seekbar
下创建三个视图
,并在移动滑块时更新每个视图的宽度。
非常粗略地说,这可能看起来像:
<RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content">
<View
android:id="@+id/green"
android:layout_width="100dp"
android:layout_height="match_parent"
android:background="#00FF00"/>
<View
android:id="@+id/orange"
android:layout_toRightOf="@id/green"
android:layout_width="100dp"
android:layout_height="match_parent"
android:background="#FFFF00"/>
<View
android:id="@+id/red"
android:layout_toRightOf="@id/orange"
android:layout_width="100dp"
android:layout_height="match_parent"
android:background="#FF0000"/>
<RangeSeekBar android:layout_width="300dp" android:layout_height="wrap_content">
</RelativeLayout>
在本例中,您将更新三色视图的宽度,使其在滑块移动时的总宽度达到300dp。
您可以使用纯色作为三个视图的背景,这看起来像您的第二个图像,也可以创建三个渐变(绿色到绿黄色、黄橙色、橙红色)。
我想改变JTable的单元格背景颜色,想从MySQL数据库中获取数据。 我在MySQL中使用一个数据表,它有一个状态字段。如果状态为1,则单元格背景颜色应为红色;如果状态为0,则应更改为红色。
我有一个带有半径和笔划的CardView,但当我以编程方式更改CardView背景时,半径和笔划将丢失,我希望新颜色保留在笔划内。 这是我的cardview xml 这里是我换颜色的地方:
我当前的应用程序运行在iOS 4.2、5和6上。 导航栏为橙色,状态栏为黑色背景色。然而,当我在iOS 7上运行相同的应用程序时,我观察到状态栏看起来是透明的,与导航栏的背景颜色相同。 因此,我无法区分状态栏和导航栏。如何使状态栏与iOS 5和iOS 6中的状态栏相同,即黑色背景色和白色文本色?我如何通过编程实现这一点? 我在谷歌上搜索了一下,发现一个建议,我必须添加一个黑色背景,大约20像素高的
问题内容: 有什么方法可以更改RibbonApplicationMenuEntryPrimary(Flamingo)的背景颜色吗? 我看了看它的javadoc,但找不到方法。 问题答案: 1)请注意,我已检查API;从开始,有很多导入和扩展,它们来自许多不同的方法(这里是我尝试覆盖MetalButtonUI的尝试)。 2)也许更改内置颜色主题会很容易,但是我不建议这样做。 3)我不是Flaming
我正在使用浮动操作按钮,我想更改背景颜色。 这是我的密码 下面是我用来尝试实现这一点的代码: 我也得到我的FAB的角落,如图所示。我应该如何消除那些角落的阴影?
问题内容: 在XCode 7.3.x中,我用以下方法更改了StatusBar的背景颜色: 但是似乎这在Swift 3.0中不再起作用。 病态尝试: 但这给了我: 有任何想法如何使用XCode8 / Swift 3.0进行更改吗? 问题答案: extension UIApplication { var statusBarView: UIView? { if responds(to: Selector