【Android】利用表格布局,Android中xml文件与java的交互制作登录界面

Android实现简单的登录界面 阅读详情

登录界面是图形编程、网页编程的一个经典而又基础的程序。

在安卓中,如图所示一个基本登录界面:


点击取消按钮就关闭这个程序,点击登录按钮则显示用户输入的用户名与密码。


一、基本布局

这个程序利用到安卓中的表格布局。

先打开res/values/strings.xml中定义几个字符串。之所以不直接把字符串直接写在activity_main.xml的组件中,是因为免得Eclipse出现警告。这个文件的代码如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">登录界面</string>
    <string name="action_settings">Settings</string>
    <string name="textview1">用户名</string>
    <string name="textview2">密码</string>
    <string name="button1">登录</string>
    <string name="button2">取消</string>
</resources>

之后,在res/layout/activity_main.xml中删除所有代码,也就是删除一新建工程就自带的处于相对布局之下的Textview组件的Helloworld标签文本。

写入我们用表格布局的登录框。

先定义一个表格布局TableLayout,整个表格布局的宽度、高度都是铺满屏幕,占据整个main_activity。这在《【Android】利用Java代码布局,按钮添加点击事件》(点击打开链接)中已经说过了。

之后,设置其gravity属性也只能使其竖直居中而已,TableLayout不会自己水平居中的。真正使其水平居中的是每一行的TableRow组件中的android:gravity="center_horizontal"。

这个表格组件其实与HTML中的table标签非常相似,table-tr。只是其没有td而已。

你在一个TableRow中定义多少个组件,它就给你多少个td。

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center" >

    <!-- 第一行 -->

    <TableRow
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal" >

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/textview1"
            android:textSize="24sp" />

        <EditText
            android:id="@+id/edittext1"
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:inputType="text"
            android:textSize="24sp" />
    </TableRow>
    <!-- 第二行 -->

    <TableRow
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal" >

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/textview2"
            android:textSize="24sp" />

        <EditText
            android:id="@+id/edittext2"
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:inputType="textPassword"
            android:textSize="24sp" />
    </TableRow>
    <!-- 第三行 -->

    <TableRow
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal" >

        <Button
            android:id="@+id/button1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/button1" />

        <Button
            android:id="@+id/button2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/button2" />
    </TableRow>

</TableLayout>

在第一行中现在一个textview的标签文本,宽度高度皆是包裹住文本就OK,里面的文本大小为24sp。sp,scaled pixels,放大像素。主要用于字体显示。根据google的建议,TextView的字号最好使用sp做单位

之后是一个编辑框,宽度固定200dp。这样才能撑大表格布局中的单元格。以免输入框太小,让用户太蛋疼。dp,device independent pixels,设备独立像素,不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA推荐使用这个,不依赖像素。然后这个编辑框输入方式是文本框,给一个id=edittext1给他,一会儿要到java文件中获取其输入的值,这个根本就是跟javascript是一个道理。

接下去的第二行和第一行没有什么区别,除了编辑框的id变成了edittext2,输入方式是密码框以外,没有任何区别。

这里静态的标签文本textview因为我们一会儿在java文件中不控制它,因为不给它设置id。

最后一行是两个按钮,设置好相应的id。一会儿在java文件中给它们都创建事件。


二、MainActivity.java

接下去就是创建两个按钮的点击事件。在MainActivity.java的代码中,与struts2一样,先要在整个方法中声明你要操作的变量,也就是按钮1、2,编辑框1、2,当然那些什么烦人的getter与setter就不需要了。这里是犹如Javascript中那句document.getElementbyId("组件id")一样,安卓是通过(强制类型转换)findViewById(R.id.组件id),让你在xml设置的组件与java文件联系起来的。

package com.example.xml_java_view;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {
	private Button button1;
	private Button button2;
	private EditText edittext1;
	private EditText edittext2;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		button1 = (Button) findViewById(R.id.button1);
		button2 = (Button) findViewById(R.id.button2);
		edittext1 = (EditText) findViewById(R.id.edittext1);
		edittext2 = (EditText) findViewById(R.id.edittext2);
		button1.setOnClickListener(new OnClickListener() {// 为button1添加点击事件
			@Override
			public void onClick(View v) {
				Toast.makeText(
						MainActivity.this,
						"用户名:" + edittext1.getText() + ",密码:"
								+ edittext2.getText(), Toast.LENGTH_LONG)
						.show();//渐变消失的消息提示
			}
		});
		button2.setOnClickListener(new OnClickListener() {// 为button2添加点击事件
			@Override
			public void onClick(View v) {
				System.exit(0);//退出程序
			}
		});
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}
“登录”按钮的点击,则显示Toast组件,也就是那个显示后会自动消失的消息提示组件。

如上所示的方法搞出这个Toast组件,关键makeText中的第二个参数,设置了显示的文本。

在通过(强制类型转换)findViewById(R.id.组件id)拿到在xml文件中设置的edittext1与edittext2两个组件的文本之后,直接现实出来。

至于取消按钮,退出程序的事件,就是在java中的System.exit(0)。

至此,整个登录界面的app做完。

Android Studio安卓学习笔记(三)Android用户界面的设计布局与组件(一)用户界面布局设计(1)... 当我们创建了一个安卓项目后,我们会发现真正建立一个完善的安卓项目并不是想象的那么容易。其实和设计GUI可视化界面一样,开发安卓也需要考虑很多方面,主要考虑的还是界面布局和需要的组件。 一:Android用户界面布局管理 Android系统按照MVC(模型(model)-视图(view)-控制器(controller))设计模式将应用程序的界面设计与功能控制设计分离,类似于... 阅读详情

相关推荐

Android很好看的登陆界面(包含详细代码)

在这里给大家安利一下设计风格,这个组件库的里面的组件和Android原生的组件的设计风格几乎相同,只不过里面加了很多个性化的设置,可以根据自己的需求去自行设计样式,里面的组件的各种性质,几乎可以满足我们的日常需求,还没有使用过的Android开发小伙伴可以去尝试一下。

m0_58941767的博客 7631

Android使用xml实现登录页面

直接上已经实现的登录页面图 xml代码 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/activity_login" android:bac...

qq_38759137的博客 4676

Android登录应用实战:HelloApp用户交互实现

Android应用程序的构建始于对整体架构的深入理解。本章将系统阐述Android应用的基本组成结构,重点解析其核心四大组件——Activity、Service、Broadcast Receiver和Content Provider的功能定位与交互机制。// 示例:在AndroidManifest.xml中声明Activity组件其中,Activity作为用户界面的载体,在登录类应用中承担用户交互入口的角色。通过HelloApp案例,我们将剖析应用启动流程、组件注册机制及的关键作用。

weixin_31185473的博客 1349

Android:简单登录界面

一、前言:这个登陆界面我前前后后写了差不多一个星期,主要有密码登录、验证码登录、键盘自动隐藏、忘记密码、新建密码等功能,你们可以自己研究一下!3.新建一个Activity:LoginForgetActivity。3.新建一个Activity:LoglinMainActivity。1.在value包下面添加一个dimens.xml。2.同样在value包下面添加string.xml。

Rssqzqyp的博客 1057

自定义表单教程 通过XML配置

1. 概述 自定义表单通过XML配置的方式,实现WEB表单的自动生成。目前自定义表单可配置的功能有:查询、新增、修改、删除和EXCEL导出。可实现的表单控件有:按钮(Button)、复选框(CheckBox)、单选框(RadioBox)、下拉框(Select)、文本框(Text)、文本区域(TextArea)、密码域(Password)、隐藏域(Hidden)、标签(Remark)、日期(Date)、时间(Time)、查询 (Query)。

Android代码-安卓多功能表单

ODK Collect ODK Collect is an Android app for filling out forms. It is designed to be used in resource-constrained environments with challenges such as unreliable connectivity or power infrastructure. ODK Collect is part of Open Data Kit (ODK), a free and open-source set of tools which help organizations author, field, and manage mobile data collection solutions. Learn more about the Open Data Kit project and its history here and read about example ODK deployments here. ODK Collect renders f

Android用户登录与数据存储:从权限请求到内外部存储的完整实践【完整实践步骤、外部存储、内部存储】

使用 Environment.getExternalStorageDirectory() 来获取外部存储的根目录,然后创建一个文件并将数据写入其中。这将使你的代码更加灵活,因为它动态获取了外部存储的路径,而不是硬编码路径。文件中读取保存的用户名和密码,然后检查它们是否与有效凭据匹配。方法尝试从SharedPreferences中获取保存的凭据,并自动登录用户,如果凭据存在并有效的话。中处理登录逻辑,验证用户名和密码是否正确。通常,这会在应用的运行时动态请求。文件中的用户名和密码,并实现自动登录。

qq_22841387的博客 2136

Android之EditText表单验证框架Demo

Android之EditText表单验证框架,轻松实现复杂繁琐的表单验证

android 表格xml,【Android】利用表格布局,Android中xml文件与java的交互制作登录界面...

登录界面是图形编程、网页编程的一个经典而又基础的程序。在安卓中,如图所示一个基本登录界面: 点击取消按钮就关闭这个程序,点击登录按钮则显示用户输入的用户名与密码。一、基本布局这个程序利用到安卓中的表格布局。先打开res/values/strings.xml中定义几个字符串。之所以不直接把字符串直接写在activity_main.xml的组件中,是因为免得Eclipse出现警告。这个文件的代码如下:...

weixin_35801437的博客 518

Android登录UI界面

利用GroupLayout配置登录XML

详解Android Studio实现用户登陆界面demo(xml实现)

主要介绍了详解Android Studio实现用户登陆界面demo,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

2.安卓用户界面布局基础

二、 2.1 View 与用户交互的一个对象 安卓sdk 文档 https://developer.android.google.cn/reference/packages Android Platform: API Level 25 android.view.View View 是其他视图的基类 ;View类的子类一般位于android.widget包中 常用属性: android:id...

qq_25911515的博客 1446

Android-S无线模块前瞻

WiFi - mainlane非强制 S 采用反射的方法直接加载wifiservice,直接hook在systemserver上,无编译依赖。gms可以动态替换wifi服务。 R 采用直接启动service的方式,wifiservice仍然map在systemserver上。 WiFi - 11ad接口支持 11ad被wifi联盟商业化为WIGIG,提供短距的60GHZ载波,理论速度为当前5G 11ac的6倍。市面上基本没有手机支持,需要独立的芯片支撑此功能。 传输距离为3m以内,外界d.

头铁的伦的博客 1044

第15章、布局Layouts之TableLayout表格布局(从零开始学Android)

TableLayout表格布局   TableLayout是指将子元素的位置分配到行或列中。Android的一个TableLayout有许多TableRow组成,每一个TableRow都会定义一个Row。TableLayout容器不会显示Row,Column,及Cell的边框线,每个Row拥有0个或多个Cell,每个Cell拥有一个View对象。   在使用tablelayout时,应注意每一

jianghuiquan的专栏 1万+

通义万相Wan2.1模型Lora训练以及推理

使用DiffSynth-Studio进行通义万象Wan2.1的Lora训练和推理

qq_64858624的博客 4604

保姆级教程:用Qlib和LightGBM从零搭建你的第一个AI量化选股策略(附完整代码)

本文提供了一份详细的教程,教你如何使用Qlib和LightGBM从零搭建AI量化选股策略。教程涵盖了环境配置、数据获取、特征工程、模型训练和策略回测等关键步骤,并附有完整代码和常见问题解决方案,适合量化投资初学者快速上手。

weixin_29191081的博客 446

android布局怎么显示表格,布局Layouts之TableLayout表格布局

TableLayout表格布局TableLayout是指将子元素的位置分配到行或列中。Android的一个TableLayout有许多TableRow组成,每一个TableRow都会定义一个Row。TableLayout容器不会显示Row,Column,及Cell的边框线,每个Row拥有0个或多个Cell,每个Cell拥有一个View对象。在使用tablelayout时,应注意每一个cell的宽度...

weixin_28304023的博客 914

高效搭建微信公众号爬虫全流程

微信公众号爬虫系统成功完成功能测试验证。该系统具备完整的数据采集与管理能力,支持多公众号内容爬取、数据存储与统计分析。通过命令行界面可执行爬取操作(如量子位、新智元等公众号),查看最新文章列表和系统统计信息。测试显示SQLite数据库正常存储数据,所有核心功能(多源支持、文章检索、数据统计)均运行良好。系统采用模块化设计,扩展性强,为后续接入真实API或网页爬取奠定了坚实基础,是AI内容聚合的优质开发平台。🎉

weixin_44975687的博客 1554

布局Layouts之TableLayout表格布局

TableLayout表格布局   TableLayout是指将子元素的位置分配到行或列中。Android的一个TableLayout有许多TableRow组成,每一个TableRow都会定义一个Row。TableLayout容器不会显示Row,Column,及Cell的边框线,每个Row拥有0个或多个Cell,每个Cell拥有一个View对象。   在使用tablelayout时,应

javaqun的博客 3724

远红外热传感器阵列 (32x24 RES) MLX90640ESF-BAA/BAB

Melexis MLX90640是一款小体积、低成本的完全校准的32x24像素红外阵列,采用行业标准,带数字接口。3.其工作温度范围为 -40°C 至 85°C,可测量的物体温度范围为 -40°C 至 300°C。该红外传感器在整个测量范围内保持高精度水平,可提供 ±1°C 的典型目标物体温度精度。2.这款 32x24 像素的器件适用于安全和便利应用,包括防火系统、智能楼宇、智能照明、IP/监控摄像机、HVAC 设备和车辆座椅占用检测。1.工作温度范围为 -40 至 85°C,可在严苛的工业环境中部署。

Summit__的博客 2001

Antlr4入门(二)基本概念解析

在上一章中(Antlr4入门(一)IDEA中Antlr的安装与使用),我们安装了Antlr,并编写运行了第一个程序“Hello world”。而在本章中,我们将学习语言类应用程序相关的重要过程、术语和数据结构。 一. 术语 语言(language)是由一系列有意义的语句组成,语句(sentence)由词组组成,词组(phrase)是由更小的子词组(subphrase)和词汇符号(vocabulary symbols)组成。 举个例子,英语就是一种语言,“Keep on going never gi.

qq_37771475的博客 5208

Android UI布局TableLayout

了解字面上TableLayout一个表格样式布局。这种布局将包括以行和列的形式的元件被布置。表格列的数目是列的各行中的最大数目。当然,表格里面的单元格它能够清空。 实例:LayoutDemo 执行效果: 代码清单: 布局文件:table_layout.xml <?xml version="1.0" encoding="utf-8"?> <T...

aofan9566的博客 395

HTB_Bike靶机之模板注入

船到桥头自然直 文章目录信息收集模板引擎SSIT 模板注入后放答案 信息收集 日常 A 扫描,两个端口 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.4 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 3072 48:ad:d5:b8:3a:9f:bc:be:f7:e8:20:1e:f6:bf:de:ae (RSA) | 256 b7:89:6c:0b:20:ed:49:b2:c1:86:7c:.

网络安全学习 798

TableLayout (表格布局)

本文介绍了Android开发中的TableLayout(表格布局)基本用法,适合初学者学习如何通过TableRow组织控件,实现表单、设置项等表格样式界面布局。提供完整activity_main.xml布局代码和MainActivity.java逻辑代码,包含TextView、EditText和Button等常用控件组合。详细说明控件排列、布局属性如stretchColumns、layout_span的使用方法。适用于Android Studio开发环境,是Android UI界面设计的重要基础之一。

2402_84971234的博客 464

从 Claude Code 到 SAP ADT,vibing-steampunk 把 ABAP 开发带进 Agentic 工程现场

vibing-steampunk(vsp)是一个连接SAP ADT API与AI编码代理的桥梁工具,通过MCP协议实现ABAP开发的自动化。它绕开传统GUI脚本方式,直接利用ADT REST API进行代码读写、调试和部署。该工具提供包分析、边界检查、LUW分析等功能,并创新性地采用Hyperfocused模式和方法级编辑来优化token使用效率。通过上下文压缩技术,vsp能智能提取关键代码片段,显著提升AI处理ABAP代码的精准度,为SAP系统现代化改造提供了高效的技术路径。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 190

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: 【Discuz】导航条、搜索栏的修改
下一篇: 【Servlet】利用JSTL表达式,C标签的循环与判断,对数据库查询内容进行分页
yongh701
博客等级 码龄16年 2117粉丝 750原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值