Android 自定义按钮
将按钮的背景颜色设置成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(); } }); } }
效果如下:
版权声明:本文为博主原创文章,未经博主允许不得转载。