Android改变颜色而不改变形状

时间:2013-07-28 13:35:30

标签: android android-layout android-xml android-custom-view

我创建了与此类似的布局:

<RelativeLayout     
    android:id="@+id/layout_one" 
    style="@style/layout_one" >

    <RelativeLayout 
        android:id="@+id/layout_two"
        style="@style/layout_two" >

    <RelativeLayout 
        android:id="@+id/layout_three"
        style="@style/layout_three" >

    </RelativeLayout>
</RelativeLayout>

对于布局一,我创建了一个带有矩形形状的自定义drawable,以便角落呈圆角和蓝色背景颜色。

但是对于布局三,我需要设置白色背景颜色,但是如果我做android:background="#FFFFFF"而不是改变,那么形状和底角也不再是圆角。

我的第一个想法是为layout_three创建自定义drawable,底部有圆角,但它不起作用。要么所有的角都是圆的,要么都没有。

需要在带圆角的图片中创建类似的内容。有什么建议吗?

Layout with rounded corners and two colors

3 个答案:

答案 0 :(得分:1)

我看到,对于布局三,你使用@ style / layout_three,这与@ style / layout_one不同。那么你为什么不去你的样式文件夹并将带有背景白色的项目放在layout_three样式

看起来应该是这样的:

<style name="layout_three">
      <item name="android:background">#FFFFFF</item>
      <!-- ... other stuff here... -->
</style>
编辑:对不起,我不太了解你的问题,现在阅读那条评论。 我现在只有一种方法可以帮助您解决这个问题。

在drawable文件夹中创建一个.xml文件,并将其命名为layout_three.xml或其他任何内容。 并使用此代码:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

<item>
<shape android:shape="rectangle" >
    <solid android:color="#FFFFFF" />
    <padding
        android:bottom="10dp"  <!--  you can set padding here 
                                 or on your layout layout_three -->
        android:left="10dp"
        android:right="10dp"
        android:top="10dp"  
    />

    <corners android:radius="2dp" /> <!-- change the radius too -->
</item>
</layer-list>

然后你只使用@ drawable / layout_three而不是@ style / layout_three

EDIT2:如果您只希望将底部圆角化为圆角,您也可以将此代码用于角落

<corners 
     android:topRightRadius="0dp"
     android:topLeftRadius="0dp"
     android:bottomLeftRadius="2dp"
     android:bottomRightRadius="2dp"/>

答案 1 :(得分:0)

您可以根据需要创建带有圆角底的xml drawable。请尝试以下代码:

<item>
 <shape android:shape="rectangle" >
  <solid android:color="#FFFFFF" />
  <corners android:radius="7dp"
     android:topRightRadius="0dp"
     android:topLeftRadius="0dp"
     android:bottomLeftRadius="7dp"
     android:bottomRightRadius="7dp"/>
 </shape>
</item>

答案 2 :(得分:0)

我刚刚看到问题是Android版面预览没有显示不同的角半径,所以你必须在设备或模拟器上测试以查看差异。