安卓开发:UI组件-Button和EditText
2.3Button
Button继承自TextView,除了通过属性设置按钮样式,还可以通过绑定drawable文件的方式来实现不同样式。
2.3.1按钮样式
新建Activity:ButtonActivity,添加Layout视图:activity_button.xml.
activity_button.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="15dp">
<Button
android:id="@+id/btn_1"
android:layout_width="match_parent"
android:layout_height="40dp"
android:text="普通按钮"
android:textSize="20sp"
android:textColor="#ffffff"
android:background="#000000"
android:layout_marginTop="10dp"/>
<Button
android:id="@+id/btn_2"
android:layout_width="match_parent"
android:layout_height="40dp"
android:text="圆角按钮"
android:textSize="20sp"
android:textColor="#ffffff"
android:background="@drawable/bg_btn1"
android:layout_below="@id/btn_1"
android:layout_marginTop="10dp"/>
<Button
android:id="@+id/btn_3"
android:layout_width="357dp"
android:layout_height="wrap_content"
android:layout_below="@+id/btn_2"
android:layout_marginTop="10dp"
android:background="@drawable/bg_btn2"
android:text="描边按钮"
android:textColor="#ff9900"
android:textSize="20sp" />
<Button
android:id="@+id/btn_4"
android:layout_width="357dp"
android:layout_height="wrap_content"
android:layout_below="@+id/btn_3"
android:layout_marginTop="10dp"
android:background="@drawable/bg_btn3"
android:text="按压效果"
android:textColor="#ffffff"
android:textSize="20sp" /> </RelativeLayout>
通过如下方式添加drawable文件(复制粘贴普通xml文件由于路径不同会导致引用出现问题):

bg_btn1.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="50dp"/>
</shape>
bg_btn2.xml(描边按钮)
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke
android:width="1dp"
android:color="#ff9900"/>
<corners
android:radius="15dp"/>
</shape>
bg_btn3.xml(按压效果)
<?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="#DBA047"/>
<corners android:radius="10dp"/>
</shape>
</item>
<item android:state_pressed="false">
<shape>
<solid android:color="#FF9900"/>
<corners android:radius="10dp"/>
</shape>
</item>
</selector>
2.3.2点击事件
在Layout文件的32行做如下改动,绑定showToast事件:
android:text="描边按钮+点击1"
33 android:onClick="showToast"
来到Activity文件为此事件进行详细描述:
public void showToast(View view){
        Toast.makeText(this,"btn3",Toast.LENGTH_SHORT).show();
    }
或者也可以使用第二种方法实现点击,修改Layout文件42行为:
android:text="按压效果+点击2"
因为此点击事件绑定了按钮4,btn4,来到Activity文件定义私有变量mBtn4,完善事件描述:
private Button mBtn4;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_button);
        mBtn4 = findViewById(R.id.btn_4);
        mBtn4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(ButtonActivity.this,"btn4",Toast.LENGTH_SHORT).show();
            }
        });
    }
最后效果:

2.4EditText
同Button一样,继承自TextView。接下来通过制作一个登录界面的方式来学习。
打开MainActivity增加私有控件mBtnEditText:
private Button mBtnEditText;
在onCreate里补全内容,绑定EditTextActivit,跳转至activity_edit_text.xml。
mBtnEditText = findViewById(R.id.btn_edittext);
mBtnEditText.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
//跳转到EditText演示界面
Intent intent = new Intent(MainActivity.this,EditTextActivity.class);
startActivity(intent); }
});
同时,在首页增加一个导向此页面的按钮:
<Button
android:id="@+id/btn_edittext"
android:layout_width="match_parent"
android:layout_height="61dp"
android:text="EditText"
android:textAllCaps="false"/> //加了一个属性:默认不全显示大写
activity_edit_text.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="15dp"> <EditText
android:id="@+id/et_1"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginTop="19dp"
android:background="@drawable/bg_username" //新建Drawable resourse file,给文字处设置一个圆角线框。
android:hint="手机号" //添加导引文字。
android:inputType="number" //此处说明了输入内容的类型,由于是手机号,所以默认为数字(见效果图),还有其他效果,可以自己尝试
android:paddingLeft="10dp" //图标左侧与边框的距离。
android:textColor="#000000"
android:textSize="16sp"
android:drawableLeft="@drawable/icon_user" //在“手机号”前加一个小图标。
android:drawablePadding="8dp" //设置图标与文字之间的间距。
android:maxLines="1"/> //设置最大行数。
<EditText
android:id="@+id/et_2"
android:layout_width="match_parent"
android:layout_height="50dp"
android:textSize="16sp"
android:textColor="#000000"
android:hint="密码"
android:inputType="textPassword" //同样,设置输入内容的类型为密码,所以输入完成后为暗文(见效果图)
android:layout_below="@id/et_1"
android:layout_marginTop="15dp"
android:background="@drawable/bg_username"
android:paddingLeft="10dp"
android:drawableLeft="@drawable/icon_psw"
android:drawablePadding="8dp"
android:maxLines="1" />
<Button
android:id="@+id/btn_login"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_below="@id/et_2"
android:layout_marginTop="40dp"
android:background="@drawable/bg_login"
android:textColor="#fff"
android:text="登录"
android:textSize="18sp"/> </RelativeLayout>
最后,在EditTextActivity为”登录“按钮添加绑定的点击事件。
增加私有控件:
private Button mBtnLogin;
完善信息:
mBtnLogin = findViewById(R.id.btn_login);
mBtnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(EditTextActivity.this,"登录成功!",Toast.LENGTH_SHORT).show();
}
});
效果图:
在手机号一行默认输入数字;密码为暗文;点击登录后跳出登录成功的提示。

安卓开发:UI组件-Button和EditText的更多相关文章
- iOS开发UI篇—Button基础
		
iOS开发UI篇—Button基础 一.简单说明 一般情况下,点击某个控件后,会做出相应反应的都是按钮 按钮的功能比较多,既能显示文字,又能显示图片,还能随时调整内部图片和文字的位置 二.按钮的三种状 ...
 - Android经常使用UI组件 - Button
		
button(Button)是Android其中一个经常使用的UI组件.非常小可是在开发中最经常使用到.一般通过与监听器结合使用.从而触发一些特定事件. Button继承了TextView.它的功能就 ...
 - 推荐使用Tiny Framework web开发UI组件
		
TINY FRAMEWORK 基于组件化的J2EE开发框架,from:http://www.tinygroup.org/ 名字 Tiny名称的来历 取名Tiny是取其微不足道,微小之意. Tiny ...
 - 微信小程序开发UI组件
		
第一 view和input和button组件 1.UI组件的通用属性 (1)id 唯一标识 (2)class 设置组件的样式类 (3)style 设置组件的内联样式 (4)hidden ...
 - UI 组件 | Button
		
最近在与其他自学 Cocos Creator 的小伙伴们交流过程中,发现许多小伙伴对基础组件的应用并不是特别了解,自己在编写游戏的过程中也经常对某个属性或者方法的用法所困扰,而网上也没有比较清晰的用法 ...
 - iOS开发UI篇——Button基础
		
一.简单说明 一般情况下,点击某个控件后,会做出相应反应的都是按钮 按钮的功能比较多,既能显示文字,又能显示图片,还能随时调整内部图片和文字的位置 二.按钮的三种状态 1. normal(普通状态) ...
 - 安卓开发 UI入门
		
布局的类型 线性布局 LinearLayout *** 垂直显示 vertical 水平显示 horizontal 文本适应 wrap_content 填充父窗体 match_parent 权重 l ...
 - [deviceone开发]-UI组件的动画示例
		
一.简介 自定义组件模版(头部,按钮,加减数量,加载,底部弹出,开关(文字/无文字),选项卡(2-4), radio)全部带自定义动画效果,需从组件商店中添加:do_Animator组件 二.效果图 ...
 - Android开发8:UI组件TextView,EditText,Button
		
版本:Android4.3 API18 学习整理:liuxinming TextView 概述 TextView直接继承了View(EditText.Button两个UI组件类的父类) TextVie ...
 
随机推荐
- 分门别类总结Java中的各种锁,让你彻底记住
			
概念 公平锁/非公平锁 公平锁是指多个线程按照申请锁的顺序来获取锁. 非公平锁是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁.有可能,会造成优先级反转或者饥 ...
 - [Swift]LeetCode229. 求众数 II | Majority Element II
			
Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. Note: The a ...
 - 一张图看懂STM32芯片型号的命名规则
			
意法半导体已经推出STM32基本型系列.增强型系列.USB基本型系列.增强型系列:新系列产品沿用增强型系列的72MHz处理频率.内存包括64KB到256KB闪存和 20KB到64KB嵌入式SRAM.新 ...
 - 【机器学习】--Kmeans从初识到应用
			
一.前述 Kmeans算法一般在数据分析前期使用,选取适当的k,将数据分类后,然后分类研究不同聚类下数据的特点. Kmeans算法是一种无监督的算法. 常用于分组,比如用户偏好. 二.概念及原理 Km ...
 - vue组件,可以通过npm引用的组件
			
本文章通过实现一个vue-dialog的弹出层组件,然后附加说明如果发布此包到npm,且能被其他项目使用. 功能说明 多层弹出时,只有一个背景层. 弹出层嵌入内部组件. 弹出层按钮支持回调 源码下载 ...
 - 使用reflector对.NET反编译
			
reflector的下载地址:https://www.cr173.com/soft/355285.html 反编译后的结果:
 - IdentityServer4实战 - API与IdentityServer的交互过程解析
			
开局一张图,内容全靠看.如有不明白的地方可在评论里说出,后面我再加上.
 - C#版(击败97.76%的提交) - Leetcode 557. 反转字符串中的单词 III - 题解
			
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. Leetcod ...
 - 精读《useEffect 完全指南》
			
1. 引言 工具型文章要跳读,而文学经典就要反复研读.如果说 React 0.14 版本带来的各种生命周期可以类比到工具型文章,那么 16.7 带来的 Hooks 就要像文学经典一样反复研读. Hoo ...
 - C++STL模板库序列容器之List容器
			
目录 一丶List容器的存储结构 二丶丶STL中list容器的使用. 一丶List容器的存储结构 list容器底层是链表结构来维护的.跟vector不一样. vector是数组维护的.拥有连续内存.所 ...