在android中创建带有两个角形边的形状

时间:2013-06-27 20:45:57

标签: android android-layout rounded-corners

我正在尝试创建一个有两个圆边和两条锐边的形状。但我不断收到以下错误:

The graphics preview in the layout editor may not be accurate:
Different corner sizes are not supported in Path.addRoundRect.

这是代码

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

    <solid android:color="#888888" >
    </solid>

    <stroke
        android:width="2dp"
        android:color="#C4CDE0" >
    </stroke>

    <padding
        android:bottom="5dp"
        android:left="5dp"
        android:right="5dp"
        android:top="5dp" >
    </padding>

    <corners
        android:bottomLeftRadius="11dp"
        android:topLeftRadius="11dp" >
    </corners>

</shape>

5 个答案:

答案 0 :(得分:8)

我也面临同样的问题。但为此我使用了图层列表。我在这里发布我的答案可能对你有所帮助。
请检查输出屏幕enter image description here

![<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
      <shape 
        android:shape="rectangle">
            <stroke android:width="1dp" android:color="#c1c1c1" />
            <solid android:color="#c1c1c1" />
            <corners android:radius="20dp"/>
        </shape>
   </item>

   <item android:right="20dp"
        >
      <shape 
        android:shape="rectangle">
            <stroke android:width="1dp" android:color="#c1c1c1" />
            <solid android:color="#c1c1c1" />
        </shape>
   </item>

</layer-list>][2]

答案 1 :(得分:2)

我能够使用您定义的相同shape创建您正在寻找的效果。错误的措辞是;

“布局编辑器中的图形预览可能不准确:”这仅适用于预览。运行应用程序,它应该按预期呈现。

修改

根据documentation;

Note: Every corner must (initially) be provided a corner radius greater than 1, or else no corners are rounded. If you want specific corners to not be rounded, a work-around is to use android:radius to set a default corner radius greater than 1, but then override each and every corner with the values you really want, providing zero ("0dp") where you don't want rounded corners.

这似乎是Google希望您实现这种形式的方式。我已经相应地修改了我的代码。

答案 2 :(得分:1)

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

    <corners
        android:topLeftRadius="10dp"
        android:bottomLeftRadius="10dp" />

    <solid android:color="#222224" />

</shape>

答案 3 :(得分:0)

我刚刚检查了你的代码并使用了相同的代码,对我来说它是有效的。 只是交叉检查这些东西。

  1. 将shape.xml保存在\ res \ drawable文件夹中。

  2. 在布局中设置Button的背景。

  3. 我的布局文件是

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
    
       <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:background="@drawable/shape"
        android:text="Click me" />
    
    </LinearLayout>
    

答案 4 :(得分:0)

使用此在线工具非常有用

  

http://angrytools.com/android/button/

你的回答

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<corners
      android:topLeftRadius="100dp"
      android:topRightRadius="100dp"
      android:bottomLeftRadius="0dp"
      android:bottomRightRadius="0dp"
 />
 <solid
      android:color="#2B9CB3"
 />
 <padding
      android:left="5dp"
      android:top="5dp"
      android:right="5dp"
      android:bottom="5dp"
 />
 <size
      android:width="270dp"
      android:height="60dp"
 />
 <stroke
      android:width="2dp"
      android:color="#FFFFFF"
  />
 </shape>
  

http://pastie.org/8952601