如何创build圆angular的EditText?

有没有什么办法可以创build具有圆angular的EditText

有比CommonsWare写的更简单的方法。 只需创build一个可绘制的资源,指定EditText绘制方式:

 <?xml version="1.0" encoding="utf-8"?> <!-- res/drawable/rounded_edittext.xml --> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" android:padding="10dp"> <solid android:color="#FFFFFF"/> <corners android:bottomRightRadius="15dp" android:bottomLeftRadius="15dp" android:topLeftRadius="15dp" android:topRightRadius="15dp"/> </shape> 

然后,只需在您的布局中引用此可绘制对象:

 <?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" > <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="5dip" android:background="@drawable/rounded_edittext" /> </LinearLayout> 

你会得到像这样的东西:

替代文字

编辑

基于马克的评论,我想添加你可以为你的EditText创build不同的状态的方式:

 <?xml version="1.0" encoding="utf-8"?> <!-- res/drawable/rounded_edittext_states.xml --> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:state_enabled="true" android:drawable="@drawable/rounded_focused" /> <item android:state_focused="true" android:state_enabled="true" android:drawable="@drawable/rounded_focused" /> <item android:state_enabled="true" android:drawable="@drawable/rounded_edittext" /> </selector> 

这些是州:

 <?xml version="1.0" encoding="utf-8"?> <!-- res/drawable/rounded_edittext_focused.xml --> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" android:padding="10dp"> <solid android:color="#FFFFFF"/> <stroke android:width="2dp" android:color="#FF0000" /> <corners android:bottomRightRadius="15dp" android:bottomLeftRadius="15dp" android:topLeftRadius="15dp" android:topRightRadius="15dp"/> </shape> 

而…现在, EditText应该看起来像:

 <?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"> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" android:background="@drawable/rounded_edittext_states" android:padding="5dip"/> </LinearLayout> 

下面是一个XML文件中的解决scheme(带有一些额外的红利代码):

 <?xml version="1.0" encoding="utf-8"?> <!-- res/drawable/edittext_rounded_corners.xml --> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:state_focused="true"> <shape> <solid android:color="#FF8000"/> <stroke android:width="2.3dp" android:color="#FF8000" /> <corners android:radius="15dp" /> </shape> </item> <item android:state_pressed="true" android:state_focused="false"> <shape> <solid android:color="#FF8000"/> <stroke android:width="2.3dp" android:color="#FF8000" /> <corners android:radius="15dp" /> </shape> </item> <item android:state_pressed="false" android:state_focused="true"> <shape> <solid android:color="#FFFFFF"/> <stroke android:width="2.3dp" android:color="#FF8000" /> <corners android:radius="15dp" /> </shape> </item> <item android:state_pressed="false" android:state_focused="false"> <shape> <gradient android:startColor="#F2F2F2" android:centerColor="#FFFFFF" android:endColor="#FFFFFF" android:angle="270" /> <stroke android:width="0.7dp" android:color="#BDBDBD" /> <corners android:radius="15dp" /> </shape> </item> <item android:state_enabled="true"> <shape> <padding android:left="4dp" android:top="4dp" android:right="4dp" android:bottom="4dp" /> </shape> </item> </selector> 

然后您只需将background属性设置为edittext_rounded_corners.xml文件即可:

 <EditText android:id="@+id/editText_name" android:background="@drawable/edittext_rounded_corners"/> 

试试这个,

1.在Drawable中创buildrounded_edittext.xml文件

  <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" android:padding="15dp"> <solid android:color="#FFFFFF"/> <corners android:bottomRightRadius="0dp" android:bottomLeftRadius="0dp" android:topLeftRadius="0dp" android:topRightRadius="0dp"/> <stroke android:width="1dip" android:color="#f06060" /> </shape> 

2.在xml文件中为您的EditText应用背景

  <EditText android:id="@+id/edit_expiry_date" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="10dip" android:background="@drawable/rounded_edittext" android:hint="@string/shop_name" android:inputType="text"/> 

你会得到这样的输出

在这里输入图像说明

感谢Norfeldt的回答。 为了获得更好的内部阴影效果,我对其渐变进行了轻微的改变。

 <item android:state_pressed="false" android:state_focused="false"> <shape> <gradient android:centerY="0.2" android:startColor="#D3D3D3" android:centerColor="#65FFFFFF" android:endColor="#00FFFFFF" android:angle="270" /> <stroke android:width="0.7dp" android:color="#BDBDBD" /> <corners android:radius="15dp" /> </shape> </item> 

在一个轻的背景布局看起来很棒..

在这里输入图像说明

按照我的想法,它已经有了圆angular。

如果你希望他们更圆润,你将需要:

  1. 克隆组成EditText背景的所有九个补丁PNG图像(在您的SDK中find)
  2. 修改每个有更多圆angular
  3. 克隆将这些EditText背景组合成一个Drawable的XML StateListDrawable资源,并修改它以指向更多的九个修补程序的PNG文件
  4. 使用新的StateListDrawable作为EditText小部件的背景

如果你只想要angular落曲线不是完整的,那么使用下面的代码。

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <corners android:radius="10dp" /> <padding android:bottom="3dp" android:left="0dp" android:right="0dp" android:top="3dp" /> <gradient android:angle="90" android:endColor="@color/White" android:startColor="@color/White" /> <stroke android:width="1dp" android:color="@color/Gray" /> </shape> 

它只会曲线EditText的四个angular度。