一、前提
Button和EditText也是非常常用的组件,在每一个app中都会或多或少的用到,今天就了解一下它的基本属性
二、目标
1、Button
2、EditText
三、内容
(一)Button
基本属性
文字的大小以及颜色
自定义背景的形状
自定义按压效果
点击事件
1、文字的大小以及颜色
这个没有什么好说的,跟TextView设置的语句是一样的
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="button"
android:textSize="20sp"
android:textColor="#FFFF88"
android:background="#000000"
/>
2、自定义背景的形状
我们在使用app时可以发现,他们的按钮形状多多少少都是圆角矩形,这样会显得美观
为了达成这一效果,我们先需要在res目录下新建一个目录,或是使用其中一个给定的目录,右键,New一个Drawable resource file,命名为shape,这样我们就得到了一个shape.xml文件,在这个文件中写入
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid
android:color="#FF9900"
/>
<corners
android:radius="20dp"
/>
</shape>
我们可以看到,首先我它他的形状设置为矩形rectangle,其中还有椭圆形oval,环ring,线line
coeners用来定义圆角,其中的radius是圆角的半径,同时设置四周,它还可以设置成
android:toLeftRadius=" " | 左上角的圆角半径 |
android:toRightRadius=" " | 右上角的圆角半径 |
android:bottomLeftRadius=" " | 左下角的圆角半径 |
android:bottomRightRadius=" " | 右下角的圆角半径 |
solid用来指定内部填充色,这个很好理解,就相当于背景颜色,只不过是在solid中设置罢了,写完这部分代码后,我们就要回到布局界面
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/shape"
android:text="button"
/>
这是我们看到,background属性里面的值发生了变化,它调用了刚才我们写的那个文件,我添加在了res/drawable目录下
可以与刚才的图片进行对比,相比较而言这种方式会更好一些
除此之外,shape中还有些其他属性,比如stroke(描边)、gradient(渐变)、size(大小)、padding(边距)等等也是比较常用的,这篇博文中介绍的很全,可以参考https://www.cnblogs.com/MianActivity/p/5867776.html
3、自定义按压效果
这个效果就是当我们在摁下按钮时会变色,使用户更有体验感
同样的方法在目录下创建一个新的Drawable resource file
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape>
<solid android:color="#FF9900"/>
<corners android:radius="20dp"/>
</shape>
</item>
<item android:state_pressed="false">
<shape>
<solid android:color="#CC7A00"/>
<corners android:radius="20dp"/>
</shape>
</item>
</selector>
此时我们用到的属性变成了selector(状态列表)主要可以帮我们完成字体换颜色的状态改变,item是它的根节点,且必须要有,state_pressed表示是否触摸,若为是,我们在这里定义一个shape属性,颜色样式自拟,如不是,则再定义一个shape属性,颜色颜色样式自拟
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="button"
android:background="@drawable/shape3"
/>
这样在我们点击他的时候他就会出现颜色的变化,表示你摁了这个按钮,更有体验感,除了触摸效果外,还有state_focused是否获取焦点,state_checked是否选中等等,有待探索
点击前 点击后
4、点击事件
将刚才那个例子,我们在摁下的同时可以测试一下我们是否真的点击了这个按钮,这一步需要在java代码中实现,有两种方法可以好的实现
(1)利用onClick事件
首先我们要在Button中添加这样一条属性,表示一个点击,跳到show方法中
android:onClick="show"
其次在MainActivity中添加一个show方法
package com.mingrisoft.button;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void show(View v){
Toast.makeText(this, "hello", Toast.LENGTH_SHORT).show();
}
}
其中Toast是一个显示时间的机制,有时间限制,就像是每次使用app你点击退出按钮,他总会提示你再点一次退出,那个提示语句就是通过Toast实现,makeText方法就是实现一个文本,其中的三个属性是上下文对象this,当前页面显示,你要显示的语句,以及显示持续的时间,LENGTH_SHORT时间短,LENGTH_LONG时间较长,一定不要忘了show(),因为Toast是通过show来显示的,如果没有则显示不出来
(2)利用setOnClickLinstener来完成
这一步不用在button中添加onclick语句,但是要给Button设置id属性,之后直接在MainActivity中添加
package com.mingrisoft.button;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button= (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "hello", Toast.LENGTH_SHORT).show();
}
});
}
}
这样也可以实现点击事件,具体的语句在之前的文章中解释过了,在此不做过多解释,就是先找到你要使用button的id,之后调用方法,在系统给的onClick中写入Toast语句,结果需要执行程序才能显示,效果如图
(二)EditText编辑框
基本属性
与Button大同小异,都可设置文字大小与颜色,只不过EditText设置的是你将要输入的文字大小和颜色
<EditText
android:id="@+id/edit1"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_marginTop="40dp"
android:hint="用户名"
android:paddingLeft="10dp"
android:background="@drawable/shape"
android:drawableLeft="@mipmap/ic_launcher"
android:drawablePadding="5dp"
android:maxLines="1"
/>
当然EditText中还有一些特殊的属性,比如android:hint=""这个属性的意思是编辑框的提示文字,我们在登录qq或是微信时会提示我们的输入用户名密码,至于其余的属性,在之前的代码中都讲过,像是背景我用了shape属性的stoke描边设置,添加一个图片,设置距离的都是一样的代码
四、总结
Button、EditText的用法也很丰富,之后的学习中如果还遇到一些常用的属性,我还会继续添加