Android Studio开发学习(三)——Button、EditText

一、前提

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的用法也很丰富,之后的学习中如果还遇到一些常用的属性,我还会继续添加

发布了16 篇原创文章 · 获赞 3 · 访问量 1095

猜你喜欢

转载自blog.csdn.net/qq_41890177/article/details/105225541