我正在尝试使用这样的背景创建一个底栏:
我目前正在使用以下代码:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<gradient android:endColor="#000000" android:startColor="#696969"
android:centerColor="#696969" android:angle="270" />
<stroke android:color="#696969" />
<padding android:left="2dp" android:top="3dp" android:right="2dp"
android:bottom="3dp" />
</shape>
</item>
</selector>
但输出看起来像这样......:
如何获得这个,两个彩色背景? 请建议.. 谢谢
答案 0 :(得分:19)
正如其他人所指出的那样,在这种情况下,一个九点是理想的(并且不会占用太多内存)。使用XML并不是最佳选择。您可以尝试以下方法:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:bottom="20dp">
<shape android:shape="rectangle" >
<size android:height="20dp" />
<solid android:color="#ff0000" />
</shape>
</item>
<item android:top="20dp">
<shape android:shape="rectangle" >
<size android:height="20dp" />
<solid android:color="#0000ff" />
</shape>
</item>
</layer-list>
在这种情况下,您的视图被认为是40dp高
这是一个包含两个不同颜色块的图层列表。 XML方法的问题在于您无法将块的高度调整为百分比(= 50%)。您必须在dp中使用实际视图大小的一半。这意味着每次更改视图高度/布局时都必须调整此drawable。九个补丁会自动调整。
答案 1 :(得分:6)
在/ res / drawable中创建gradient.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#FFFFFF"
android:endColor="#00000000"/>
</shape>
并在/ res / layout中的main.xml布局文件中
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/gradient">
</LinearLayout>
您可以通过替换android:startColor
和android:endColor
替换android:angle值和开始/结束颜色来指定角度。
答案 2 :(得分:1)
您可以使用9张图片作为背景 见http://developer.android.com/guide/developing/tools/draw9patch.html
编辑:
您可以按照本教程http://android10.org/index.php/articlesother/279-draw-9-patch-tutorial
答案 3 :(得分:1)
如果您愿意放弃使用XML绘制它,我找到了一个解决方案......
借鉴:Gradients and shadows on buttons
这就是你想要的!但不同的颜色,大小和按钮......
Bitmap bmResult = Bitmap.createBitmap(buttonWidth, buttonHeight, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bmResult);
Paint paint = new Paint();
paint.setShader(new LinearGradient (0, 0, 0, bmResult.getHeight()/2, 0xFF284560, 0xFF284060, TileMode.MIRROR));
canvas.drawPaint(paint);
paint.setShader(new LinearGradient (0, 0, 0, bmResult.getHeight()/2, 0x55FFFFFF, 0x22FFFFFF, TileMode.CLAMP));
paint.setMaskFilter(new BlurMaskFilter(3, BlurMaskFilter.Blur.NORMAL));
canvas.drawRect(0, 0, bmResult.getWidth(), bmResult.getHeight()/2, paint)
......改变颜色,当然。
我不确定你是否可以使用XML Layout并单独引用这个Java Button,或者你最终必须用Java而不是XML来制作你的整个布局...这将是SO的另一个问题
希望有所帮助。虽然,这可能是我的无知,但我也建议去9patch路线。
P.S。我是一个全新的Java并使用位图,所以如果我全力以赴,我会为你的案例发布一个更全面的解决方案。
答案 4 :(得分:0)
你可以创建它的图像并沿x坐标重复它。