【问题标题】:Android change color without changing shapeAndroid改变颜色而不改变形状
【发布时间】:2013-07-28 13:35:30
【问题描述】:

我创建了类似这样的布局:

<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>

对于布局一,我创建了一个具有矩形形状的自定义可绘制对象,以便角落是圆形的和蓝色背景色。

但是对于布局三,我需要设置白色背景颜色,但如果我这样做android:background="#FFFFFF",它也会改变形状,并且底角不再是圆形的。

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

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

【问题讨论】:

  • 第二个RelativeLayout 是怎么回事?自定义drawable是可行的方法,您只能使底角变圆。
  • 但我不能只将角半径设置为 0 并将底部设置为 50dp。那样不行。
  • 您可以制作一个只有一些圆角的可绘制形状。 那样不行 - 这根本没有帮助。您可能想要发布完整的布局文件 + drawables。

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


【解决方案1】:

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

它应该看起来像这样:

<style name="layout_three">
      <item name="android:background">#FFFFFF</item>
      <!-- ... other stuff here... -->
</style>

编辑:抱歉,我没有很好地理解您的问题,现在阅读该评论。 我现在想到的只有一种方法可以帮助您解决这个问题。

在您的可绘制文件夹中创建一个 .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"/>

【讨论】:

  • 正如我提到的那样,背景形状发生了变化,底部不再是圆形的!
【解决方案2】:

您可以根据您的要求创建一个带有圆底角的 xml 可绘制对象。试试下面的代码:

<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>

【讨论】:

    【解决方案3】:

    我刚刚读到问题在于 Android 布局预览没有显示不同的圆角半径,因此您必须在设备或模拟器上进行测试才能看到差异。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-11
      • 1970-01-01
      • 1970-01-01
      • 2011-05-19
      • 2017-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多