Android实现一个带清除和提交按钮的清爽圆角搜索框

news/2024/10/17 12:20:18/

运行效果:

 

放入Toolbar的效果 

 

 清除按钮有内容才显示:

 下面是教程:

实现一个圆角搜索框,可以使用CardView来实现,同时可以添加一个EditText和两个ImageView作为清除和提交按钮。

activity_main

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#1e90ff"android:padding="10dp"tools:context=".MainActivity"><androidx.cardview.widget.CardViewandroid:id="@+id/search_edit"android:layout_width="match_parent"android:layout_height="wrap_content"app:cardCornerRadius="16dp"tools:ignore="MissingConstraints"android:layout_marginTop="20dp"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><EditTextandroid:id="@+id/search_edit_text"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:background="@null"android:hint="Search"android:maxLines="1"android:padding="8dp"android:textSize="16sp"android:drawableLeft="@drawable/ic_baseline_search_24"android:drawablePadding="6dp"/><ImageViewandroid:id="@+id/search_clear_button"android:layout_width="wrap_content"android:layout_height="match_parent"android:padding="8dp"android:src="@drawable/ic_baseline_clear_24"/><ImageViewandroid:id="@+id/search_submit_button"android:layout_width="wrap_content"android:layout_height="match_parent"android:padding="8dp"android:src="@drawable/ic_baseline_search_24"/></LinearLayout></androidx.cardview.widget.CardView></androidx.constraintlayout.widget.ConstraintLayout>

其中,EditTextbackground设置为@null,使其没有边框,从而使CardView的边框成为搜索框的边框,同时设置android:padding来控制搜索框的内边距。

ImageViewsrc属性可以设置为自己定义的图标,如清除按钮和提交按钮的图标。

接下来,在代码中获取EditText、清除按钮和提交按钮,并为它们设置相应的事件监听:

 MainActivity

package com.example.round_search;import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);final EditText searchEditText = findViewById(R.id.search_edit_text);ImageView searchClearButton = findViewById(R.id.search_clear_button);ImageView searchSubmitButton = findViewById(R.id.search_submit_button);// 为清除按钮设置点击事件监听器searchClearButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {searchEditText.setText("");}});// 为提交按钮设置点击事件监听器searchSubmitButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String keyword = searchEditText.getText().toString();Toast.makeText(MainActivity.this,keyword,Toast.LENGTH_SHORT).show();searchEditText.setText("");// TODO: 处理搜索关键字}});}
}

原创,转载请注明出处


http://www.ppmy.cn/news/55619.html

相关文章

Python小姿势 - #### Python技术博客:Python多线程编程

Python技术博客&#xff1a;Python多线程编程 你好&#xff0c;这里是自媒体技术博主Aurora&#xff0c;今天我想分享一下Python多线程编程。 首先&#xff0c;什么是多线程编程&#xff1f;多线程编程是一种让多个线程同时执行的编程方式&#xff0c;它可以让程序的执行更加高…

leetcode 643. 子数组最大平均数 I

题目描述解题思路执行结果 leetcode 643. 子数组最大平均数 I 题目描述 子数组最大平均数 I 给你一个由 n 个元素组成的整数数组 nums 和一个整数 k 。 请你找出平均数最大且 长度为 k 的连续子数组&#xff0c;并输出该最大平均数。 任何误差小于 10-5 的答案都将被视为正确答…

Winform从入门到精通(34)—SaveFileDialog(史上最全)

文章目录 前言一、属性1、Name2、AddExtension3、DefaultExt4、CheckFileExists5、CheckPathExists6、CreatePrompt7、DereferenceLinks8、FileName9、FileNames10、Filter11、FilterIndex12、InitialDirectory13、ShowHelp14、SupportMultiDottedExtensions15、Tag16、Title

Django性能监视工具django-silk的使用

目录 一、基本安装配置使用 1.安装 django-silk&#xff1a; 2.在项目的 settings.py 文件中添加以下内容&#xff1a; 3.在 MIDDLEWARE 中添加 silk 中间件&#xff0c;并在 INSTALLED_APPS 中添加 silk 应用程序。 4.在项目的根urls.py 文件中配置 silk 5.执行迁移 6.…

面试官:v-model原理?

什么是v-model v-model是Vue框架中的一个指令&#xff0c;用来实现双向数据绑定。它能够在表单元素&#xff08;如输入框、复选框等&#xff09;和Vue实例中的数据属性之间建立起一条双向数据通道&#xff0c;使得当表单元素的值发生改变时&#xff0c;对应的数据属性也会相应…

Faster-RCNN代码解读5:主要文件解读-上

Faster-RCNN代码解读5&#xff1a;主要文件解读-上 前言 ​ 因为最近打算尝试一下Faster-RCNN的复现&#xff0c;不要多想&#xff0c;我还没有厉害到可以一个人复现所有代码。所以&#xff0c;是参考别人的代码&#xff0c;进行自己的解读。 ​ 代码来自于B站的UP主&#xff…

道达天际首次亮相军博会,“天网融合”引爆全场

4月23日,第十届中国指挥控制大会暨第八届中国(北京)军事智能技术装备博览会(军博会)落下帷幕。北京道达天际科技股份有限公司(简称道达天际)携DAODAJ2天网情报产品体系首次亮相,全面展示天网融合技术、产品、行业解决方案等成果,最新技术应用备受现场观众瞩目,“天网融合”创新…

【华为云主机迁移服务SMS,使用指南 (linux版本)】

文章目录 华为云主机迁移服务SMS,使用指南 (linux版本)1.迁移前准备工作1.1 必要条件1.2 准备 (注意切换浏览器) 2.在源端(A服务器)安装Agent (linux版), 连接到B的华为云SMS3.设置目的端(B服务器)--在B浏览器内操作4.开始服务器复制5.启动目的端 (B)6.其他非必要操作 华为云主…