Xamarin Android自定义文本框

简介: xamarin android 自定义文本框简单的用法关键点在于,监听EditText的内容变化,不同于java中文本内容变化去调用EditText.addTextChangedListener(mTextWatcher);为EditText设置内容变化监听!简单来说就是添加一个AfterTextChanged 事件就OK了,这是最简单的一种做法,当然你要想java那样去监听也可以的。

xamarin android 自定义文本框简单的用法

关键点在于,监听EditText的内容变化,不同于java中文本内容变化去调用EditText.addTextChangedListener(mTextWatcher);为EditText设置内容变化监听!
简单来说就是添加一个AfterTextChanged 事件就OK了,这是最简单的一种做法,当然你要想java那样去监听也可以的。
来看一下实现的效果图:


自定义的EditText::CustomerEditText.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.Graphics.Drawables;
using Android.Util;
using Java.Lang;
using Android.Text;
using Android.Graphics;

namespace EditTextListener
{
    public class CustomerEditText:EditText
    {
        private Drawable imgClear;
        private Context Context;
        public CustomerEditText(Context context, IAttributeSet attrs) : base(context, attrs)
        {
            this.Context = context;
            init();
        }
        private  void init()
        {
            imgClear = Context.Resources.GetDrawable(Resource.Drawable.del);
            AfterTextChanged += (s, e) =>
            {
                setDrawable();
            };

        }

        //回执删除图片
        private void setDrawable()
        {
            if (Length() < 1)
                SetCompoundDrawablesWithIntrinsicBounds(null, null, null, null);
            else
                SetCompoundDrawablesWithIntrinsicBounds(null,null,imgClear,null);
        }
        //当触摸范围在右侧时,触发删除方法,隐藏叉叉
        public override bool OnTouchEvent(MotionEvent e)
        {
            if (imgClear != null && e.Action == MotionEventActions.Up)
            {
                int eventX = (int)e.RawX;
                int eventY = (int)e.RawY;
                Rect rect = new Rect();
                GetGlobalVisibleRect(rect);
                rect.Left = rect.Right - 100;
                if (rect.Contains(eventX, eventY))
                {
                    Text=string.Empty;
                }
            }
            return base.OnTouchEvent(e);
        }
    }
}
布局文件Main.axml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <EditTextListener.CustomerEditText
        android:id="@+id/edit_search"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_margin="10dp"
        android:background="@drawable/bg_frame_search"
        android:hint="带删除按钮的EditText"
        android:maxLength="50"
        android:padding="5dp"
        android:singleLine="true"
        android:textColor="#000000" />
</LinearLayout>
自定义的背景样式:bg_frame_search.xml
<?xml version="1.0" encoding="utf-8" ?>
<shape
  xmlns:android="http://schemas.android.com/apk/res/android">
  <solid android:color="@color/background_white"/>
  <corners android:radius="5dp"/>
  <stroke android:width="1px" android:color="@color/frame_search"/>
</shape>

颜色值我就不贴了,自己写几个颜色就OK了。
代码非常简单,当然这是最简单的实现方法,还有很多功能小功能都没实现。所以后面继续努力吧。



目录
相关文章
|
1月前
|
Android开发
Android面试题之自定义View注意事项
在Android开发中,自定义View主要分为四类:直接继承View重写onDraw,继承ViewGroup创建布局,扩展特定View如TextView,以及继承特定ViewGroup。实现时需注意:支持wrap_content通过onMeasure处理,支持padding需在onDraw或onMeasure/onLayout中处理。避免在View中使用Handler,使用post系列方法代替。记得在onDetachedFromWindow时停止线程和动画以防止内存泄漏。处理滑动嵌套时解决滑动冲突,并避免在onDraw中大量创建临时对象。
24 4
|
20天前
|
机器学习/深度学习 人工智能 算法
探索AI在医疗影像分析中的应用探索安卓开发中的自定义View组件
【7月更文挑战第31天】随着人工智能技术的飞速发展,其在医疗健康领域的应用日益广泛。本文将聚焦于AI技术在医疗影像分析中的运用,探讨其如何通过深度学习模型提高诊断的准确性和效率。我们将介绍一些关键的深度学习算法,并通过实际代码示例展示这些算法是如何应用于医学影像的处理和分析中。文章旨在为读者提供对AI在医疗领域应用的深刻理解和实用知识。
22 0
|
1月前
|
前端开发 API Android开发
Android自定义View之Canvas一文搞定
这篇文章介绍了Android自定义View中如何使用Canvas和Paint来绘制图形。Canvas可理解为画布,用于绘制各种形状如文字、点、线、矩形、圆角矩形、圆和弧。常见API包括`drawText()`、`drawPoint()`、`drawLine()`、`drawRect()`等。文章还提到了Canvas的保存、恢复、平移和旋转方法,通过绘制钟表盘的例子展示了如何实际应用。总结关键点:Canvas与Paint结合用于图像绘制,掌握Canvas的基本绘图函数及坐标变换操作是自定义View的关键。
23 0
Android自定义View之Canvas一文搞定
|
1月前
|
消息中间件 前端开发 Android开发
Android面试题自定义View之Window、ViewRootImpl和View的三大流程
Android开发中,View的三大核心流程包括measure(测量)、layout(布局)和draw(绘制)。MeasureSpec类在测量过程中起到关键作用,它结合尺寸大小和模式(EXACTLY、AT_MOST、UNSPECIFIED)来指定View应如何测量。onMeasure方法用于自定义View的测量,布局阶段,ViewGroup调用onLayout确定子元素位置,而draw阶段按照特定顺序绘制背景、内容、子元素和装饰。整个流程始于ViewRootImpl的performTraversals,该方法触发测量、布局和绘制。
25 0
|
1月前
|
XML 数据格式
Android-自定义三角形评分控件
Android-自定义三角形评分控件
22 0
|
1月前
Android-自定义流布局标签
Android-自定义流布局标签
24 0
|
1月前
|
Android开发
Android自定义之高仿淘宝下拉刷新
Android自定义之高仿淘宝下拉刷新
26 0
|
1月前
|
Android开发
Android自定义之QQ身边的人
Android自定义之QQ身边的人
23 0
|
1月前
|
Android开发
Android自定义一个属于自己的刻度尺
Android自定义一个属于自己的刻度尺
30 0
|
1月前
|
Android开发
Android自定义一个属于自己的时间钟表
Android自定义一个属于自己的时间钟表
17 0