将按钮的背景颜色设置成drawable文件即可。虽然这里讲的是Button,但是TextView及其子组件也可以如法炮制
主布局文件如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:orientation="vertical">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="默认按钮"
android:textSize="30sp"
/>
<Button
android:id="@+id/round_corner_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="圆角按钮"
android:textSize="30sp"
android:textColor="#FFFFFF"
android:background="@drawable/my_button_selector"
/>
</LinearLayout>
下面三个文件都放在drawable-hdpi文件夹下,第一个是my_button_selector.xml,定义了按钮的不同状态
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:state_pressed="true"
android:drawable="@drawable/my_button_pressed"
></item>
<item
android:drawable="@drawable/my_button_default"
></item>
</selector>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!--圆角半径 -->
<corners
android:topLeftRadius="10dp"
android:topRightRadius="10dp"
android:bottomLeftRadius="10dp"
android:bottomRightRadius="10dp"
/>
<!-- 背景颜色 -->
<solid android:color="#B4CDE6"/>
<!-- 描边 -->
<stroke
android:width="2dp"
android:color="#000"
/>
<!-- 内边距 -->
<padding
android:left="10dp"
android:right="10dp"
android:top="10dp"
android:bottom="10dp"
/>
</shape>
my_button_default.xml为默认外观
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!--圆角半径 -->
<corners
android:topLeftRadius="10dp"
android:topRightRadius="10dp"
android:bottomLeftRadius="10dp"
android:bottomRightRadius="10dp"
/>
<!-- 背景颜色 -->
<solid android:color="#4F71AE"/>
<!-- 描边 -->
<stroke
android:width="2dp"
android:color="#000"
/>
<!-- 内边距 -->
<padding
android:left="10dp"
android:right="10dp"
android:top="10dp"
android:bottom="10dp"
/>
<!-- 渐变背景,不好看故取消 -->
<!-- <gradient -->
<!-- android:startColor="#FDF6E3" -->
<!-- android:centerColor="#AEC7E1" -->
<!-- android:endColor="#0055E3" -->
<!-- android:type="sweep" -->
<!-- /> -->
</shape>
Activity中测试单击效果
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button roundCornerBn = (Button)findViewById(R.id.round_corner_button);
roundCornerBn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "点击了圆角按钮", Toast.LENGTH_LONG).show();
}
});
}
}
效果如下: