在EditText中限制输入,自定义样式,监听输入的字符,自动换行

自动获取焦点

<!-- 添加:<requestFocus /> 会自动获取焦点 -->
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:gravity="center_horizontal"
        android:hint="自动获取焦点">
        <requestFocus />
    </EditText>

限制输入的字符

<!-- android:digits="1234567890.+-*/%\n()" 限制输入的字符类型 -->
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="只能输入1234567890.+-*/%\n()"
        android:digits="1234567890.+-*/%\n()" />

设定颜色

    <!-- android:textColorHint="#FF0000"设定输入后的文字颜色 -->
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="默认显示的字符"
        android:textColorHint="#FF0000"
        android:textColor="#00ff00"
        android:ems="10" />

监听输入的字符

    <EditText
        android:id="@+id/editText_id"
        android:imeOptions="actionSend"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="实时监听输入的字符"
        android:ems="10" />
package com.kale.edittext;
import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.KeyEvent;
import android.view.inputmethod.EditorInfo;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;
import android.widget.Toast;

import com.kale.edittext.R;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        EditText eT = (EditText)findViewById(R.id.editText_id);

        eT.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                // TODO 输入过程中,还在内存里,没到屏幕上

            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
                // TODO 在输入之前会触发的

            }

            @Override
            public void afterTextChanged(Editable s) {
                // TODO 输入完将要显示到屏幕上时会触发
                Toast.makeText(MainActivity.this, s.toString(), 0).show();
            }
        });

        /*阻止一进入Activity,editText就获得焦点弹出输入法对话框,
         * 只需要在AndroidManifest.xml相应的activity标签中加入下面这句话即可实现。
        android:windowSoftInputMode="stateHidden|adjustResize"
        <activity
            android:name=".booking.FlightOrderInfoActivity"
            android:screenOrientation="portrait"
            android:label="@string/app_name"
            android:windowSoftInputMode="stateHidden|adjustResize"/>*/
    }
}

自定义风格

<EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="自定义风格"
        android:layout_gravity="center"
        android:gravity="center"
        style="@style/my_edittext_style"
        android:ems="10" />

styles.xml

    <!-- 先继承系统的editText风格,自己重写 -->
    <style name="my_edittext_style" parent="@android:style/Widget.EditText">
        <item name="android:background">@drawable/input_box_bg</item>
    </style>

设定点击效果,点上去后边框变黑。这里没用图片,是自己画的圆角

 <EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_margin="20dp"
        android:layout_height="50dp"
        android:textColor="#FFFAFA"
        android:hint="设定点击效果,点上去边框变黑"
        android:background=<strong>"@drawable/bg_edittext"  </strong>
        android:ems="10" />

bg_edittext_focused.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- 获得焦点的时候 -->
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#FFFFFF" />
    <corners android:radius="3dip"/>
    <stroke
        android:width="1dip"
        android:color="#728ea3" />
</shape>  

bg_edittext_normal.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- 没有被选中的时候的背景图 -->
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#FFFFFF" />
    <corners android:radius="3dip"/>
    <stroke
        android:width="1dip"
        android:color="#BDC7D8" />
</shape>  

bg_edittext.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
       <item
           android:state_window_focused="false"
           android:drawable="@drawable/bg_edittext_normal" />
       <item
           android:state_focused="true"
           android:drawable="@drawable/bg_edittext_focused" />
</selector> 

自动换行

    <!-- 我们只要确保singleLine为false的话,并且设置宽度一定,就可以自动换行,注意在这里不要设置inputType -->
    <EditText
        android:layout_width="400dp"
        android:layout_height="wrap_content"
        android:hint="自动换行,有的地方需要用到多行的文本输入框,但EditText在默认的情况下是单选的,且不能进行换行。"
        android:textSize="30sp"
        android:singleLine="false"
        android:ems="10" />

整个的布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <!-- 添加:<requestFocus /> 会自动获取焦点 -->
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:gravity="center_horizontal"
        android:hint="自动获取焦点">
        <requestFocus />
    </EditText>

    <!-- android:digits="1234567890.+-*/%\n()" 限制输入的字符类型 -->
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="只能输入1234567890.+-*/%\n()"
        android:digits="1234567890.+-*/%\n()" />

    <!-- android:textColorHint="#FF0000"设定输入后的文字颜色 -->
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="默认显示的字符"
        android:textColorHint="#FF0000"
        android:textColor="#00ff00"
        android:ems="10" />

    <!-- android:phoneNumber="true"被inputType替换了,现在用inputType来限制输入字符的类型 -->
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="限制输入的字符类型为numberPassword"
        android:inputType="numberPassword" />

    <EditText
        android:id="@+id/editText_id"
        android:imeOptions="actionSend"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="实时监听输入的字符"
        android:ems="10" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="自定义风格"
        android:layout_gravity="center"
        android:gravity="center"
        style="@style/my_edittext_style"
        android:ems="10" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_margin="20dp"
        android:layout_height="50dp"
        android:textColor="#FFFAFA"
        android:hint="设定点击效果,点上去边框变黑"
        android:background="@drawable/bg_edittext"
        android:ems="10" />

    <!-- 我们只要确保singleLine为false的话,并且设置宽度一定,就可以自动换行,注意在这里不要设置inputType -->
    <EditText
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:hint="自动换行,有的地方需要用到多行的文本输入框,但EditText在默认的情况下是单选的,且不能进行换行。"
        android:textSize="30sp"
        android:singleLine="false"
        android:ems="10" />

</LinearLayout>

源码下载:http://download.csdn.net/detail/shark0017/7593127

在EditText中限制输入,自定义样式,监听输入的字符,自动换行,布布扣,bubuko.com

时间: 2024-10-13 21:58:24

在EditText中限制输入,自定义样式,监听输入的字符,自动换行的相关文章

Android EditText截获与监听输入事件

Android EditText截获与监听输入事件共有2种方法: 1.第一种方法:使用setOnKeyListener(),不过这种方式只能监听硬键盘事件. edittext.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { textview.setText(edittext.getText()); return fal

Android中Preference的使用以及监听事件分析

> 在Android系统源码中,绝大多数应用程序的UI布局采用了Preference的布局结构,而不是我们平时在模拟器中构建应用程序时使用的View布局结构,例如,Setting模块中布局.当然,凡事都有例外,FMRadio应用程序中则使用了View布局结构(可能是该应用程序是marvel公司提供的,如果由google公司做,那可说不准).归根到底,Preference布局结构和View的布局结构本质上还是大同小异,Preference的优点在于布局界面的可控性和高效率以及可存储值的简洁性(每个

Unity3D热更新之LuaFramework篇[04]--自定义UI监听方法

时隔一个多月我又回来啦! 坚持真的是很难的一件事,其它事情稍忙,就很容易说服自己把写博客的计划给推迟了. 好在终于克服了自己的惰性,今天又开始了. 本篇继续我的Luaframework学习之路. 一.规范开发模式 此前的示例中,动态加载的panel都默认以GuiCamera为父节点,且面板的大小设置得有些随意,为方便后续开发,现做一些调整和规范. 1.设定本项目的开发分辨率为1334x750(Game视图分辨率也设置为这个大小): 2.调整相机,将原有的GuiCamera从Canvas下拖离出来

EditTextUtil 监听输入字数

package com.toge.ta.utils; import android.text.Editable;import android.text.Selection;import android.text.TextWatcher;import android.widget.EditText; /** * Created by Administrator on 2015/10/21. */public class EditTextUtil { /* * 监听输入内容是否超出最大长度,并设置光

JavaScript自定义事件监听

一.事件的属性和方法 1 //事件Event 2 //属性:` 3 `bubbles`:布尔值,是否会冒泡 4 `cancelable`:布尔值,是否可以取消默认动作 5 `target`:目标对象 6 `currentTarget`:当前对象 7 `timeStamp`:时间戳(相对于某个时刻) 8 `type`:事件类型,即注册该事件的名字 9 `eventPhase`:返回事件传播的当前阶段 10 11 12 //方法 13 1.event.stopPropagation(); 阻止冒泡

Android中Button的五种监听事件

简单聊一下Android中Button的五种监听事件: 1.在布局文件中为button添加onClick属性,Activity实现其方法2.匿名内部类作为事件监听器类3.内部类作为监听器4.Activity本身作为事件监听器,实现onClickListener5.外部类作为监听器 ButtonListenerActivity.class public class ButtonListenerActivity extends AppCompatActivity implements View.On

移动端监听输入手机号以及判断手机号有效

项目案例需求如,输入/绑定正确的手机号才能下载软件,输入手机号发送验证码的功能等: 如下代码可以实现基本功能: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <style> .gray-btn{ background: #ccc; } .blue-btn{ background: #09f; } </style> &

cocos2d-js 自定义事件监听派发

熟悉js的dom事件或者flash事件的,基本都能立马明白cc.eventManager的用法. cc.eventManager有两种注册监听器的方式,一种是原生事件,例如 cc.eventManager.addListener({ event: cc.EventListener.KEYBOARD, onKeyReleased: function(keyCode, event) { if (keyCode == cc.KEY.back) { cc.director.end(); } }}, th

Android中Activity中左右滑动手势的监听

<pre name="code" class="java">/* * 完成对左右划屏 */ @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: prev.set(event.getX(), event.getY()); break; case MotionEvent.ACT