.net开发安卓入门 - 基本交互(Button,输入EditText,TextView,Toast)

news2024/11/19 7:35:26

.net开发安卓入门 - 基本交互

  • 前言
  • TextView
  • EditText
  • Button
    • xml代码如下
    • C#代码如下
    • 运行效果
  • 优化代码
    • 先看原生Android给一个View添加点击事件的三种方式
    • 在Xamarin.Android中添加onClick也的两种办法
    • 使用onClick绑定前后台调用处理逻辑
      • 第一步:
      • 第二步:
      • 第三步:引用Mono.Android.Export![](https://img-blog.csdnimg.cn/5dd4d37c8a2348abb98187e36a83dc8c.png)
    • 注意事项


前言

上一篇文章介绍了第一个程序 HelloWorldhttps://blog.csdn.net/iml6yu/article/details/128236761,
接下来介绍一些基本交互

TextView

在上问中为了展示Hello World,使用了TextView空间,代码如下

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
  <TextView
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:text="Hello World!"/>

</RelativeLayout>

为了方便展示,我暂时将布局设置成线性布局,关于布局的内容请查看

EditText

输入文本框

我们添加一个EditText, 并且指定ID ,代码如下

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Hello World!"/>
    <!-- 一个输入文本框 -->
    <EditText
        android:id="@+id/txtInput"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="text" />

    <!-- 一个数字输入文本框 -->
    <EditText
        android:id="@+id/txtNumInput"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="number" />


</LinearLayout>

Button

添加一个Button按钮,然后增加事件,按下Button后使用Toast进行提示

xml代码如下

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Hello World!"/>
    <!-- 一个输入文本框 -->
    <EditText
        android:id="@+id/txtInput"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="text" />

    <!-- 一个数字输入文本框 -->
    <EditText
        android:id="@+id/txtNumInput"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="number" />

    <Button
        android:id="@+id/btnTest"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="这是一个Button按钮"
        app:cornerRadius="40dp" 
        
        />
</LinearLayout>

C#代码如下

找到 MainActivity文件
在OnCreate中添加对控件的操作内容。代码如下:

using Android.App;
using Android.OS;
using Android.Runtime;
using Android.Widget;
using AndroidX.AppCompat.App;

namespace 我的第一个安卓程序
{
    [Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
    public class MainActivity : AppCompatActivity
    {
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            Xamarin.Essentials.Platform.Init(this, savedInstanceState);
            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.activity_main);

            #region *****************在这里添加了用户控件处理代码start*****************
            //找到两个edittext
            var txtInput = FindViewById<EditText>(Resource.Id.txtInput);
            var txtNumInput = FindViewById<EditText>(Resource.Id.txtNumInput);
            //找到btn按钮
            var button = FindViewById<Button>(Resource.Id.btnTest);
            button.Click += (es, ee) => {
                //吐司内容
                Toast.MakeText(this, $"txtInput的内容是:{txtInput.Text},txtNumInput数字是:{txtNumInput.Text}", ToastLength.Long).Show();
            }; 
            #endregion *****************在这里添加了用户控件处理代码end*****************
        }
        public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
        {
            Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);

            base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
        }
    }
}

运行效果

请添加图片描述

优化代码

如果虽然实现了一个功能,那是因为当前只有一个Button,这样还是比较容易添加事件的,如果存在多个,代码书写上就会存在一些工作量,有没有其他办法呢?

先看原生Android给一个View添加点击事件的三种方式

  1. 使用匿名对象
*Java*
((ImageButton) findViewById(R.id.music_cover)) .setOnClickListener(new View.OnClickListener() { 
    @Override public void onClick(View v) { }
});
  1. 使用实现了View.OnClickListener的对象
    先实现此接口:
class MyClickListener implements View.OnClickListener{
    @Override public void onClick(View v) {
    }
}

使用时

((ImageButton) findViewById(R.id.music_cover)).setOnClickListener(new MyClickListener());
  1. 使用 android:onClick属性
    android:onClick=“onViewClick”
    代码如下:
 <Button
        android:id="@+id/btnTest"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="这是一个Button按钮"
        app:cornerRadius="40dp" 
        android:onClick="ShowMessage"
        
        />

在Activity中实现此命名方法

public void ShowMessage(View v){
        Toast.makeText(this,"onclick", Toast.LENGTH_SHORT).show();
    }

在Xamarin.Android中添加onClick也的两种办法

  • 如上demo中使用的Click事件方法。
  • 方法二 也是使用onClick进行绑定

使用onClick绑定前后台调用处理逻辑

第一步:

修改xml代码如下

 <Button
        android:id="@+id/btnTest"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="这是一个Button按钮"
        app:cornerRadius="40dp" 
        android:onClick="ShowMessage"
        
        />

第二步:

在对应的Activity中添加对应的方法,代码如下(当前demo就是添加到MainActivity.cs文件中)

using Android.App;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using AndroidX.AppCompat.App;

namespace 我的第一个安卓程序
{
    [Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
    public class MainActivity : AppCompatActivity
    {
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            Xamarin.Essentials.Platform.Init(this, savedInstanceState);
            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.activity_main);

            #region *****************在这里添加了用户控件处理代码start*****************
            //找到两个edittext
            var txtInput = FindViewById<EditText>(Resource.Id.txtInput);
            var txtNumInput = FindViewById<EditText>(Resource.Id.txtNumInput);
            //找到btn按钮
            var button = FindViewById<Button>(Resource.Id.btnTest);
            button.Click += (es, ee) =>
            {
                //吐司内容
                Toast.MakeText(this, $"txtInput的内容是:{txtInput.Text},txtNumInput数字是:{txtNumInput.Text}", ToastLength.Long).Show();
            };
            #endregion *****************在这里添加了用户控件处理代码end*****************
        }
        public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
        {
            Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);

            base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
        }

        [Java.Interop.Export]
        public void ShowMessage(View viwe)
        {
            Toast.MakeText(this, $" 这是通过ShowMessage进来的", ToastLength.Long).Show();
        }
    }
}

要注意代码增加了ShowMessage方法,并且指定了特性

第三步:引用Mono.Android.Export

注意事项

使用这个属性的view必须是可点击的,比如Button,ImageButton等这些本身就是可点击的,那TextView可以使用不呢?肯定可以,但是一定要 设置另外一个属性,android:clickable=“true”.

https://developer.aliyun.com/article/261387

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/72346.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【实操篇】Linux组管理

目录 ●组管理 ●linux组的基本介绍 ●组的创建以及对用户的操作&#xff08;复习&#xff09; ●查看文件的所有者 ●改变文件所有者 ●修改文件所在的组 ●改变用户所在组 ●linux组的基本介绍 在Linux中的每个用户必须属于一个组&#xff0c;不能独立于组外。并且在Li…

[附源码]Python计算机毕业设计SSM基于云服务器网上论坛设计(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

软件测试 | 版本控制神器GitHub的基本使用与踩坑,教你一铲子填平!

首先需要申请GitHub帐号&#xff0c;这个就不多说了&#xff0c;大家自行百度或Google吧哈。这里默认大家都已经有GitHub账号了~ PS:&#xff08;如果已经配置好的小伙伴可以跳过配置GitHub这部分&#xff09; 配置GitHub 踩坑时刻 - 配置 第一次使用&#xff0c;如果没有配…

Photoshop使用蓝湖 cutterman插件快速切图

快速切图便于节约我们的开发时间 一 蓝湖插件 1.蓝湖官网下载插件 2.ps加载插件 一般都会自动加载 3.开始使用蓝湖插件切图 点击蓝湖插件选择对应的团队点击面板上的切图&#xff0c;选中图层进行标记 标记完成后选择上传全部面板 会提示到蓝湖官网下载对应的切图选择对应的…

mac OS 环境下安装 Redis(使用Homebrew终端安装)

使用Homebrew终端安装Redis&#xff08;好处后面会介绍&#xff09; 获取安装Homebrew&#xff08;复制如下代码到终端运行&#xff09;&#xff1a; /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"选择好克隆原后按提示…

【学习经验分享NO.15】本科硕士学位论文和学术论文查重及降重方法

文章目录前言一、查重方法1、查重指标的含义2、查重方法二、如何修改论文重复三、常见问题答疑总结前言 学术小论文以及本科和硕士大论文在发表前需要进行降重处理&#xff0c;不然重复率过高会影响论文的发表&#xff0c;小论文一般查重要至少在20%以下&#xff0c;有些sci期…

pandas设置和显示数据框行列的数量

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 pandas设置和显示数据框行列的数量 [太阳]选择题 以下python代码结果错误的一项是? import pandas as pd pd.set_option(display.max_columns, None) pd.set_option(display.max_rows, None…

vue集成ant-design-vue

因为需要集成ant-design-vue&#xff0c;所以我在老的vue项目上进行集成&#xff0c;这不集成不要紧&#xff0c;一集成项目都起不来&#xff0c;下面进行下梳理 1遇到问题&#xff1a; BrowserslistError: Unknown browser query dead 查资料得到; 1.删除package.json文件里…

Docker[3]-Docker的常用命令

1 帮助命令 命令说明docker version查看docker的版本信息docker info查看docker详细的信息docker --helpdocker的帮助命令&#xff0c;可以查看到相关的其他命令 docker version docker info docker --help 2 镜像命令 镜像命令说明docker images列出本地主机上的镜像docker …

论文投稿指南——中国(中文EI)期刊推荐(第3期)

&#x1f680; EI是国际知名三大检索系统之一&#xff0c;在学术界的知名度和认可度仅次于SCI&#xff01;&#x1f384;&#x1f388; 【前言】 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊。其中&#xf…

DBCO试剂Acrylate-PEG5-DBCO,DBCO-PEG5-Acrylate应用生物标记

基础产品数据&#xff08;Basic Product Data&#xff09;&#xff1a; CAS号&#xff1a;N/A 中文名&#xff1a;二苯并环辛炔-五聚乙二醇-丙烯酸酯 英文名&#xff1a;DBCO-PEG5-Acrylate&#xff0c;Acrylate-PEG5-DBCO 结构式&#xff08;Structural&#xff09;&#xff1…

JAVA SCRIPT设计模式--行为型--设计模式之Interpreter解释器模式(15)

JAVA SCRIPT设计模式是本人根据GOF的设计模式写的博客记录。使用JAVA SCRIPT语言来实现主体功能&#xff0c;所以不可能像C&#xff0c;JAVA等面向对象语言一样严谨&#xff0c;大部分程序都附上了JAVA SCRIPT代码&#xff0c;代码只是实现了设计模式的主体功能&#xff0c;不代…

企业微信如何设置文件权限?

当企业使用企业微信移动办公时&#xff0c;有些员工想要上传一些私人文件到企业微信微盘中“我的文件”里保存&#xff0c;但是又担心管理员可以看到&#xff0c;那么该如何设置文件权限呢&#xff1f; 前言 企业微信的会话内容存档功能可以在员工与客户知情的情况下存储聊天记…

linux系统怎么远程进服务器

linux系统怎么远程进服务器 我是艾西&#xff0c;还是有很多小白同学问我linux系统服务器怎么远程连接。那么今天我们重点来教教大家如何用电脑远程服务器配上图文教程&#xff0c;让不懂的新手小白一看就会&#xff0c;分分钟上手教程 远程服务器需要一台电脑俗称“PC”就是我…

i.e., namely, that is区别

i.e. 用作同位语&#xff0c;“即” To buy the car that I really want (i.e., a Tesla), I will have to work a lot of overtime. namely 用作插入语&#xff0c;表示列举&#xff0c;”也就是” The present paper evaluates the effect of major weather variables, nam…

阿里云国际版代充-对象存储OSS可应用哪些场景?

阿里云国际版对象存储OSS是一款海量、安全、低成本、高可靠的云存储服务&#xff0c;可提供99.9999999999%&#xff08;12个9&#xff09;的数据持久性&#xff0c;99.995%的数据可用性。多种存储类型供选择&#xff0c;全面优化存储成本。 阿里云国际版OSS具有与平台无关的RE…

谷粒商城6:反向代理与性能优化

0.thymeleaf的复习 1.nginx反向代理 nginx的整体框架 访问流程 域名访问->在本地host文件中查找对应ip->找到了访问 找不到->DNS域名解析来解析域名到ip->找到了访问整体配置流程&#xff1a; 本机内&#xff1a; 查看域名的映射规则 在host文件中增加gulimall.co…

立创EDA极速入门(2)——完成一个STM32最小系统板

请提前观看&#xff1a;立创EDA极速入门&#xff08;1&#xff09;——熟悉PCB和立创EDA基本操作&#xff1b; 邀请加入嵌入式社区&#xff0c;您可以在上面发布问题&#xff0c;博客链接&#xff0c;公众号分享&#xff0c;行业消息&#xff0c;招聘信息等。 立创EDA绘制PCB只…

javaweb系统实现中遇到的问题

1.顶部导航栏 2.字符串转换成double 3.session的使用 4.eclipse如何debug 5.debug的查看变量的窗口 6.navicat设置默认值失效 7.javax.servlet.ServletException: 8.java.lang.NoSuchMethodError/java.lang.nullpointerexception 1.[html 简单顶部导航栏top-bar实现 csshtml](h…

高通Ride软件开发包使用指南(4)

高通Ride软件开发包使用指南&#xff08;4&#xff09;5 刷写SoC镜像5.2 高通镜像刷写加载器5.2.1 下载QFIL5.2.2 紧急下载模式设置SOC5.2.2.1 Switches5.2.2.2 测试自动化控制器脚本5.2.2.3 快速启动模式5.2.2.3.1 使用 Fastboot 擦除5.2.3 Flashing5.2.3.1 使用 Meta build 刷…