精华内容
下载资源
问答
  • 文本框文字悬浮触发事件

    千次阅读 2012-01-11 11:28:45
    import flash.text.TextField; import flash.text.TextFieldAutoSize; //指示灯 var alterSprite:Sprite = new Sprite(); alterSprite.x = 100; alterSprite.y = 100;...addChild(alterSprite);...var txt:TextField
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    //指示灯
    var alterSprite:Sprite = new Sprite();
    alterSprite.x = 100;
    alterSprite.y = 100;
    addChild(alterSprite);
    
    //文本段
    var txt:TextField = new TextField();
    txt.autoSize = TextFieldAutoSize.LEFT;	//规范文本高度宽度
    txt.htmlText = "11222222222\n11111<a href='event:test'>2222</a>11111<a href='event:test1'>2222</a>11111";
    addChild(txt);
    txt.addEventListener(MouseEvent.MOUSE_MOVE, moveHandle);
    txt.addEventListener(MouseEvent.MOUSE_OUT, outHandle);
    
    var oldStr:String = '';
    function moveHandle(e:MouseEvent):void{
    	var indexNum:int = txt.getCharIndexAtPoint(txt.mouseX, txt.mouseY);
    	var txtFormat:TextFormat = txt.getTextFormat(indexNum);
    	var lsStr:String = txtFormat.url;
    	if (lsStr != "" && lsStr != null )	{		
    		drawCircle(0xff0000);
    	}else{
    		outHandle(null);
    	}
    }
    
    function outHandle(e:MouseEvent):void{
    	drawCircle(0xffff00);
    }
    
    function drawCircle(color:uint):void{
    	alterSprite.graphics.clear();
    	alterSprite.graphics.beginFill(color);
    	alterSprite.graphics.drawCircle(0,0,50);
    	alterSprite.graphics.endFill();
    }
    

    展开全文
  • 单行文字长度超过文本框width值导致换行问题

    问题描述

    单行文字长度超过文本框width值导致换行问题。

    这里写图片描述

    需求

    超过部分显示为省略号,鼠标悬浮文字上时显示全部文字。

    解决方法

    通过设置text-overflow: ellipsis;样式实现以省略号展现超出部分。

    代码
    <style type="text/css">
    .hideText{
        text-overflow: ellipsis; // 文字溢出用省略号处理
        white-space: nowrap;
    }
    </style>
    
    <body>
        <li class="clearfix g-mb10">
            <span class="txt-1">任务名称:</span>
            <span class="txt-2 hideText" id="preDsName"> style="width:200px;" </span>
        </li>
    <body>
    
    <script>
        $(document).ready(function(){
          init();
        });
        function init(){
            ...
            service.getDataSource(dsId, function(data){
                var ds = data.data;
                // 初始化界面
                $('#preDsName').html(ds.dsName);
                // 鼠标悬浮文字上时显示全部文字
                $('#preDsName').attr("title",ds.dsName);
            });
        }
    </script>

    效果

    这里写图片描述




    展开全文
  • *设置Drawable显示于文字之上 setCompoundDrawables(Drawable left, Drawable top, Drawable right, Drawable bottom) *设置清除图标的显示与隐藏,调用setCompoundDrawables为EditText绘制上去 * @param ...

    引言

    前一篇文章 Android进阶——自定义View之系统控件架构及自定义控件概述从宏观整体上总结了关于自定义View的相关知识点,也说过自定义View有三种方式,这篇文章就作为我们开发自定义View优先考虑的解决方案——继承系统现有控件扩展功能的第一篇实战,主要是实现类似IOS风格的EditText,可以设置抖动动画和自带删除小图标的UI效果。

    一、自定义加强型EditText功能概述

    这个所谓的加强型EditText,其实就是添加了两种效果:当输入时自动添加上删除按钮当输入为空的时候点击按钮触发非空的抖动动画,其他的和普通的EdiText无异。

    二、自定义加强型EditText设计思想

    首先我们知道android中任何一个控件其本质都是一个类,也同样拥有一些属性,无论是以java动态构造还是xml静态构造,最终显示到Activity上都需要先生成他们的实例,而任何一个类需要生成实例都需要通过它对应的构造方法,所以在构造方法里有很多事可以做。接下来再一步步分析下。

    1、绘制出删除按钮

    我们知道EditText继承自TextView,而我们知道TextView本身就自带drawableLeft、drawableRight、drawableTop、drawableRight属性可以在TextView的左右上下绘制对应的drawable,如下TextView源码所示,我们可以通过这个方法获取对应的drawable

        /**
         * Returns drawables for the left, top, right, and bottom borders.
         *
         * @attr ref android.R.styleable#TextView_drawableLeft
         * @attr ref android.R.styleable#TextView_drawableTop
         * @attr ref android.R.styleable#TextView_drawableRight
         * @attr ref android.R.styleable#TextView_drawableBottom
         */
        @NonNull
        public Drawable[] getCompoundDrawables() {
            final Drawables dr = mDrawables;
            if (dr != null) {
                return dr.mShowing.clone();
            } else {
                return new Drawable[] { null, null, null, null };
            }
        }

    2、动态改变删除按钮的显示和隐藏

    当文本框里不为空的时候则显示;文本框为空的时候和失去焦点时则自动隐藏,我们都知道android为我们提供了个接口可以监听输入的变化——TextWatcher,我们只需要去实现这个接口并设置监听即可

    /**
     * When an object of a type is attached to an Editable, its methods will be called when the text is changed.、
     * 每当文本改变的时候就会依次出发三个回调方法
     */
    public interface TextWatcher extends NoCopySpan {
        /**
         * This method is called to notify you that, within ,
         * the  characters beginning at start
         * are about to be replaced by new text.
         */
        public void beforeTextChanged(CharSequence s, int start,
                                      int count, int after);
        /**
         * This method is called to notify you that, within characters beginning at start have just replaced old text 
    
        /**
         * This method is called to notify you that, somewhere within the text has been changed.
         */
        public void afterTextChanged(Editable s);
    }

    至于失去焦点的时候自动隐藏,View类封装了很多接口方法,其中onFocusChange可以监听焦点改变事件

        /**
         * 当ClearEditText焦点发生变化的时候,判断里面字符串长度设置右边图标的显示与隐藏
         */
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            this.isFocuse = hasFocus;
            if (hasFocus) {
                setRightIconVisiable(getText().length() > 0);
            } else {
                setRightIconVisiable(false);
            }
        }

    4、实现点击右边按钮清空文本

    控件的触屏事件的起点均是由Touch开始的,所以在一定程度上来说可以通过重写onTouch方法来模拟点击事件

      /**
         * 模拟点击事件当我们按下的位置 在  EditText的宽度 - 图标到控件右边的间距 - 图标的宽度  和EditText的宽度 - 图标到控件右边的间距
         * 之间就相当于点击了右边的Icon
         */
        @Override
        public boolean onTouchEvent(MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_UP) {
                if (getCompoundDrawables()[2] != null) {
    
                    boolean isRightClick = event.getX() > (getWidth() - getTotalPaddingRight())
                            && (event.getX() < ((getWidth() - getPaddingRight())));
    
                    if (isRightClick) {
                        this.setText("");
                    }
                }
            }
            return super.onTouchEvent(event);
        }

    5、抖动动画效果

    只需要给控件添加上TranslateAnimation来实现位移动画即可。

     private Animation genDefaultAnimation() {
            animtion = new TranslateAnimation(0, 10, 0, 0);
            animtion.setInterpolator(new CycleInterpolator(counts));
            animtion.setDuration(during);
            return animtion;
        }

    三、实现加强型EditText

    这里写图片描述

    package com.crazymo.training.widget;
    
    import android.content.Context;
    import android.content.res.TypedArray;
    import android.graphics.drawable.Drawable;
    import android.text.Editable;
    import android.text.TextWatcher;
    import android.util.AttributeSet;
    import android.view.MotionEvent;
    import android.view.View;
    import android.view.View.OnFocusChangeListener;
    import android.view.animation.Animation;
    import android.view.animation.CycleInterpolator;
    import android.view.animation.TranslateAnimation;
    import android.widget.EditText;
    
    import com.crazymo.training.R;
    
    /**
     * Created by cmo on 2016/10/6.
     * 加强型EditText:作为普通输入框可以设置非空提示的晃动动画效果,自带删除的按钮
     */
    public class EnhancedEditText extends EditText implements OnFocusChangeListener, TextWatcher {
    
        private Drawable mRightIco;//显示于右边的Icon
        private Animation animtion;//用于提示非空的晃动动画
        private boolean isFocuse;//当前是否获得焦点
        private int counts;
        private int during;
        private float rightSize;
        private OnRightDrawableChanged rightChangedListener;
    
        public EnhancedEditText(Context context) {
            this(context, null);
        }
    
        public EnhancedEditText(Context context, AttributeSet attrs) {
            this(context, attrs, android.R.attr.editTextStyle);//直接引用系统的EditText的Style
        }
    
        public EnhancedEditText(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
            //引用自定义属性
            TypedArray typedArray=context.obtainStyledAttributes(attrs,R.styleable.enhancedEditText);
            during=typedArray.getInt(R.styleable.enhancedEditText_during,2000);
            counts=typedArray.getInt(R.styleable.enhancedEditText_counts,6);
            rightSize=typedArray.getFloat(R.styleable.enhancedEditText_rightSize,0.7f);
            init();
        }
    
        /**
         * 初始化右边的Icon和设置监听器
         */
        private void init() {
            //如果没有设置drawableRight属性则会获取默认的值,设置了drawableRight则会显示设置的值
            mRightIco = getCompoundDrawables()[2];
            if (mRightIco == null) {
                mRightIco = getResources().getDrawable(R.drawable.clear_selector);
            }
            //重新设置左边的Icon为左边Icon的大小
            if(getCompoundDrawables()[0]!=null) {
                mRightIco.setBounds(0, 0, (int) ((getCompoundDrawables()[0].getIntrinsicWidth()) * rightSize), (int) ((getCompoundDrawables()[0].getIntrinsicHeight()) * rightSize));
            }else {
                //若没有设置LeftDrawable的图像则默认设置右边的图像大小为96*96
                mRightIco.setBounds(0, 0, 96, 96);
            }
    
            setRightIconVisiable(false);//默认设置隐藏图标
            setOnFocusChangeListener(this);//设置焦点改变的监听
            addTextChangedListener(this);//设置输入框里面内容发生改变的监听
        }
    
    
        /**
         * 模拟点击事件当我们按下的位置 在  EditText的宽度 - 图标到控件右边的间距 - 图标的宽度  和
         * EditText的宽度 - 图标到控件右边的间距之间就相当于点击了右边的Icon
         */
        @Override
        public boolean onTouchEvent(MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_UP) {
                if (getCompoundDrawables()[2] != null) {
    
                    boolean isRightClick = event.getX() > (getWidth() - getTotalPaddingRight())
                            && (event.getX() < ((getWidth() - getPaddingRight())));
    
                    if (isRightClick) {
                        this.setText("");
                    }
                }
            }
            return super.onTouchEvent(event);
        }
    
        /**
         * 当ClearEditText焦点发生变化的时候,判断里面字符串长度设置右边图标的显示与隐藏
         */
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            this.isFocuse = hasFocus;
            if (hasFocus) {
                setRightIconVisiable(getText().length() > 0);
            } else {
                setRightIconVisiable(false);
            }
        }
    
        /**
         *设置Drawable显示于文字之上 setCompoundDrawables(Drawable left, Drawable top, Drawable right, Drawable bottom)
         *设置清除图标的显示与隐藏,调用setCompoundDrawables为EditText绘制上去
         * @param visible
         */
        protected void setRightIconVisiable(boolean visible) {
            Drawable right = visible ? mRightIco : null;
            if(rightChangedListener!=null) {
                if (visible) {
                    rightChangedListener.onRightDisplay();
                } else {
                    rightChangedListener.onRightInvisible();
                }
            }
            setCompoundDrawables(getCompoundDrawables()[0],
                    getCompoundDrawables()[1], right, getCompoundDrawables()[3]);
        }
    
        /**
         * 当输入框里面内容发生变化的时候回调的方法
         */
        @Override
        public void onTextChanged(CharSequence s, int start, int count,
                                  int after) {
            if (isFocuse) {
                setRightIconVisiable(s.length() > 0);//如果没有输入字符串则会隐藏
            }
        }
    
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                                      int after) {
        }
    
        @Override
        public void afterTextChanged(Editable s) {
        }
        /**
         * 启动晃动动画
         * @param animation 可定义自定义的动画效果,若不定义则使用默认的动画
         */
        public void setShakeAnimation(Animation animation) {
            if(animation==null) {
                this.startAnimation(genDefaultAnimation());
            }else{
                this.startAnimation(animation);
            }
        }
    
        /**
         * 设置默认的晃动动画
         * @return animation
         */
        private Animation genDefaultAnimation() {
            animtion = new TranslateAnimation(0, 10, 0, 0);
            animtion.setInterpolator(new CycleInterpolator(counts));
            animtion.setDuration(during);
            return animtion;
        }
        public void setRightChangedListener(OnRightDrawableChanged listener){
            rightChangedListener=listener;
        }
        public interface OnRightDrawableChanged{
    
            void onRightDisplay();
            void onRightInvisible();
        }
    }
    

    四、应用自定义加强型EditText

    package com.crazymo.training;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.text.TextUtils;
    import android.text.method.HideReturnsTransformationMethod;
    import android.view.View;
    import android.widget.Button;
    import android.widget.ImageView;
    import android.widget.Toast;
    
    import com.crazymo.training.widget.EnhancedEditText;
    
    public class MainActivity extends Activity implements EnhancedEditText.OnRightDrawableChanged {
        private final String TAG="EnhanceEditText";
        private Button btn;
        private EnhancedEditText clearEditText;
        private ImageView imageView;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            init();
        }
        private void init(){
            getViews();
            setBtnClickListener();
            //clearEditText.setRightIco(getDrawable(R.mipmap.ic_user));
            clearEditText.setRightChangedListener(this);
        }
        private void getViews(){
            btn= (Button) findViewById(R.id.test_btn);
            clearEditText= (EnhancedEditText) findViewById(R.id.cleat_edt_user);
            imageView= (ImageView) findViewById(R.id.show_pwd);
        }
        private void setBtnClickListener(){
            btn.setOnClickListener(new View.OnClickListener(){
    
                @Override
                public void onClick(View v) {
                    if(TextUtils.isEmpty(clearEditText.getText())){
                        //设置晃动
                        clearEditText.setShakeAnimation(null);
                        //设置提示
                        Toast.makeText(MainActivity.this,"用户名不能为空",Toast.LENGTH_LONG).show();
                        return;
                    }else{
                        //设置密码可见
                        clearEditText.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
                        //clearEditText.setRightIco(getDrawable(R.mipmap.ic_user));
                        //clearEditText.setTransformationMethod(PasswordTransformationMethod.getInstance());
                    }
                }
            });
        }
    
        @Override
        public void onRightDisplay() {
            imageView.setVisibility(View.VISIBLE);
        }
    
        @Override
        public void onRightInvisible() {
            imageView.setVisibility(View.GONE);
        }
    }
    

    五、输入法软键盘悬浮于文本框的下方

    再也不用去特意嵌套ScrollView来实现了,只需要设置EditText的属性即可

    android:imeOptions="flagNoExtractUi"

    六、实现输入小写英文字母自动转为大写

    让EditText具备自动大小写转换的功能的需求,其实很简单,提供在android.text.method包中提供了ReplacementTransformationMethod类,我们只需要继承这个ReplacementTransformationMethod类并实现对应的方法,并且EditText的setTransformationMethod方法即可

    ///首先定义一个类继承ReplacementTransformationMethod类并重写两个方法。。
    public class AutoCaseTransformation extends ReplacementTransformationMethod {
        /**
         * 获取要改变的字符。
         * @return 将你希望被改变的字符数组返回。
         */
        @Override
        protected char[] getOriginal() {
            return new char[]{'a', 'b', 'c', 'd', 'e',
                    'f', 'g', 'h', 'i', 'j', 'k', 'l',
                    'm', 'n', 'o', 'p', 'q', 'r', 's',
                    't', 'u', 'v', 'w', 'x', 'y', 'z'};
        }
    
        /**
         * 获取要替换的字符。
         * @return 将你希望用来替换的字符数组返回。
         */
        @Override
        protected char[] getReplacement() {
            return new char[]{ 'A', 'B', 'C', 'D', 'E',
                    'F', 'G', 'H', 'I', 'J','K','L','M',
                    'N','O','P','Q','R','S','T','U','V','W','X','Y','Z' };
        }
    }

    应用

    editText.setTransformationMethod(new AutoCaseTransformationMethod());
    展开全文
  • 主要为大家详细介绍了javaScript实现鼠标在文字悬浮时弹出悬浮层效果的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • html页面中很多元素会用到.../*显示说明性文字*/function tips(id,str){t= getTop(document.getElementById(id))-document.getElementById(id).offsetHeight;l= getLeft(document.getElementById(id));document.ge...

    html页面中很多元素会用到文本提示,当鼠标悬停之后显示一段说明文字;

    /*显示说明性文字*/

    function tips(id,str){

    t= getTop(document.getElementById(id))-document.getElementById(id).offsetHeight;

    l=  getLeft(document.getElementById(id));

    document.getElementById("tips").innerHTML="提示:"+str;

    document.getElementById("tips").style.left=l+"px";

    document.getElementById("tips").style.top=t+"px";

    document.getElementById("tips").style.display="";

    }

    /*移除说明性文字*/

    function outtips(){

    document.getElementById("tips").style.display='none';

    }

    //获取元素的纵坐标

    function getTop(e){

    var offset=e.offsetTop;

    if(e.offsetParent!=null) offset+=getTop(e.offsetParent);

    return offset;

    }

    //获取元素的横坐标

    function getLeft(e){

    var offset=e.offsetLeft;

    if(e.offsetParent!=null) offset+=getLeft(e.offsetParent);

    return offset;

    }

    在需要提示的元素的onmouseover事件中调用 tips(id,str)提示说明,在onmouseout事件中调用outtips()隐藏说明

    展开全文
  • [code="java"]function title_show(fileId,InvestigatorId) { var remarks = ""; var scrollTop = Math.max(document.documentElement.scrollTop, ... document.body.scrollTo...
  • 项目中需要实现一个状态显示的悬浮框,要求可以设置两种模式:拖动模式和不可拖动模式。 实现效果图如下: 实现步骤: 1.首先要设置该悬浮框的基本属性: /** * 显示弹出框 * * @param context */ @...
  • 设计iOS中随系统键盘弹收和内容文字长度自适应高度的文本框 文本输入框是多数与社交相关的app中不可或缺的一个控件,这些文本输入框应该具备如下的功能: 1.在键盘为弹起时,输入框悬浮在界面底部。 2.当键盘弹起时...
  • 代码为EditText悬浮文字提示的实例代码,有问题请博客留言:http://blog.csdn.net/seven2729/article/details/48655807
  • Insert title herefunction showTip(e,temptx){//alert(e.clientX+" "+e.clientY);if(document.all&&(document.readyState=="complete"||document.readyState=="interactive")){document.getElementById(".....
  • 文本框提示气泡

    2013-10-09 16:20:09
    文本框气泡、里面有demo大家下载可以看到。
  • 如上图所示,之前的子版本号这个combobox是很长的,已经超过右边的对齐线了。因为这个combobox里面的文本也是很长的,为了做到两全其美,就是考虑给combobox添加title属性。 下面看看效果图 ...
  • 两个JS小功能,鼠标经过标签时实现悬浮层提示,点击可复制文字。 小记以备忘。 比较简单,直接看代码了。O(∩_∩)O~ function returnMain() { window.returnValue = "====return from sub===="; ...
  • 之前遇到过这个需求,所以就把自己的成果和大家分享下成果^ ^ 我是利用了element-ui里面的tooltip组件进行一个二次封装,大家可以... // 显示的文字内容 content: { type: String, default: () => { return '' }
  • input文本框里面显示提示信息,鼠标点击文本框提示信息自动消失!
  • [摘要]AndroidStudio函数悬浮提示文字框设置方法一:AndroidStudio在默认情况下是不会和Eclipse那样,鼠标移动到一个类或... Android Studio函数悬浮提示文字框设置方法一: Android Studio在默认情况下是不会和...
  • 对于div和span标签的title属性可以实现悬浮西安事title字段的效果。 对于不换行且溢出显示为省略号: overflow:hidden; white-space:nowrap; text-overflow:ellipsis; demo: 普通的html: <span style="display:...
  • 逛逛论坛发现 Edittext上面能悬浮文字提示。当EditText在输入的时候出输入框上方 能出现悬浮文字提示。我找了很多资料看了一些论坛。最后被我无意间找到了 有一个自定义的控件:FloatlabeledEdittext 能让嵌套在...
  • --用来引出悬浮窗口的div--> <div> <a href="javascript:void(0)" onclick="displayWindow()"> 点击显示悬浮窗口 </a> </div> <!--悬浮窗口--> <div i...
  • 想要鼠标悬停在文本框上时,显示文本框详情,只要title的值等于文本框的value值就可以了 <input onmouseover="this.title=this.value">
  • 主要介绍了当鼠标滑过文本框自动选中输入框内容的JS代码,有需要的朋友可以参考一下
  • 超长长度的文字在省略显示后,如何在鼠标悬停时,以悬浮框的形式显示出全部信息? 文字在超出长度时,如何实现用省略号代替? 用CSS实现超长字段用省略号表示的方法:所有浏览器兼容! html代码如下: <div style=...
  • js实现文本框提示

    2015-06-24 17:40:25
    this.className='huise'和this.className='heise' 是指当文本框内是提示文字时显示的灰色,如果是关键字的话改为正常的黑色 这是这两个样式: .huise{ color:#999999;} .heise{ color:#000000;}
  • PyQt5文本框控件QLineEdit的常用方法

    千次阅读 2020-03-15 22:50:43
    两个方法都是可以设置文本框中显示的文本内容的,不过效果不一样,第一个更是浮显文字,更像是一种默认提示,第二种就是正常与手动输入的那样显示效果!使用方法与效果如下所示: lineE1 = QLineEdit(self)...
  • 在使用ext的过程中,有时需要在TextField后加上说明性文字和鼠标悬浮提示的需求,在网上找到相关资料在整合了下 Ext.override(Ext.form.TextField, {  followtext: {text:'',class:''}, //控件后说明内容,...
  • ①:用js来定义函数 <head> <title>失物招领管理</title> <%@ include file="../flat/flat_head_inc.jsp" %>...script type="text/javascript... //鼠标悬浮时,显示文本框里面的全部内容 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,885
精华内容 754
关键字:

文字悬浮文本框