Android 系统搜索框 如何限制输入字数长度

Android 系统搜索框 如何限制输入字数长度,第1张

android 搜索框就是一个EditText输入控件,或者是EditText的子类

长度限制方式有以下几种:

方法一:

在 xml 文件中设置文本编辑框属性作字符数限制

如:android:maxLength="10" 即限制最大输入字符个数为10

方法二:

在代码中使用InputFilter 进行过滤

//editTextsetFilters(new InputFilter[]{new InputFilterLengthFilter(20)}); 即限定最大输入字符数为20

示例代码如下:

public class TextEditActivity extends Activity {

    / Called when the activity is first created /

    @Override

    public void onCreate(Bundle savedInstanceState) {

        superonCreate(savedInstanceState);

        setContentView(Rlayoutmain);

        

        EditText editText = (EditText)findViewById(Ridentry);

        editTextsetFilters(new InputFilter[]{new InputFilterLengthFilter(20)});

    }

}

方法三:

利用 TextWatcher 进行限制,TextWatcher是注册一个内存输入的改变事件,当你的输入框输入字符和删除字符都会触发

实现代码如下:

package cietextEdit;

import androidtextEditable;

import androidtextSelection;

import androidtextTextWatcher;

import androidwidgetEditText;

/

  监听输入内容是否超出最大长度,并设置光标位置

  /

public class MaxLengthWatcher implements TextWatcher {

private int maxLen = 0;

private EditText editText = null;

public MaxLengthWatcher(int maxLen, EditText editText) {

thismaxLen = maxLen;

thiseditText = editText;

}

public void afterTextChanged(Editable arg0) {

// TODO Auto-generated method stub

}

public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,

int arg3) {

// TODO Auto-generated method stub

}

public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {

// TODO Auto-generated method stub

Editable editable = editTextgetText();

int len = editablelength();

if(len > maxLen)

{

int selEndIndex = SelectiongetSelectionEnd(editable);

String str = editabletoString();

//截取新字符串

String newStr = strsubstring(0,maxLen);

editTextsetText(newStr);

editable = editTextgetText();

//新字符串的长度

int newLen = editablelength();

//旧光标位置超过字符串长度

if(selEndIndex > newLen)

{

selEndIndex = editablelength();

}

//设置新光标所在的位置

SelectionsetSelection(editable, selEndIndex);

}

}

}

有关EditText 即Android输入框的更多用法,建议查看官网API文档

LinearLayoutLayoutParams params=new LinearLayoutLayoutParams(LayoutParamsMATCH_PARENT,LayoutParamsMATCH_PARENT); viewsetLayoutParams(params);

如下图所示,怎样获取两个红框之间的距离。

1、如果这个页面是固定不动的:获取屏幕整个高度-其余不要的高度

2、把“买家秀”的坐标和“立即下单”的坐标分别查找到;将高度进行相减,则可以得到两个之间的距离)

这里对第二种方式进行演示:

private void getHeight() {

// 买家秀

int[] viewLocation = new int[2];

lldowngetLocationInWindow(viewLocation);

int lldownX = viewLocation[0]; // x 坐标

int lldownY = viewLocation[1]; // y 坐标

// 下单按钮

int[] view_Location = new int[2];

addressitTeaddgetLocationInWindow(view_Location);

int addressitTeaddX = view_Location[0]; // x 坐标

int addressitTeaddY = view_Location[1]; // y 坐标

// 买家秀到下单按钮距离

int Height=addressitTeaddY-lldownY;

Loge("yxl--height",Height+"");

int ivHeight=v_nomjxiugetHeight();

Loge("yxl--ivm",ivHeight+"");

// 空白距离

int distance= Height-ivHeight;

Loge("yxl---distance",distance+"");

if (distance>=0){

tianWebsetVisibility(ViewVISIBLE);

LinearLayoutLayoutParams linearParams =(LinearLayoutLayoutParams) tianWebgetLayoutParams(); //取控件textView当前的布局参数

linearParamsheight = distance;// 控件的g

tianWebsetLayoutParams(linearParams); //使设置好的布局参数应用到控件

} else {

tianWebsetVisibility(ViewGONE);

}

}

ps:因为图中所有的控件都放在一个Scrollview里面的,点击买家秀的时候,会回d一下回来。这里获取到 :买家秀到下单的距离-(没有买家秀时会显示的高度)=空白的高度;

将这个空白高度用一个webview填充,防止点击的时候,d一下。

记录自己开发中遇到的问题,大家可以忽略这个ps。

动态获取控件x和y轴

@BindView(Ridll_down)

LinearLayout lldown;

//放在方法中,lldown为控件名

int[] viewLocation = new int[2];

lldowngetLocationInWindow(viewLocation);

int lldownX = viewLocation[0]; // x 坐标

int lldownY = viewLocation[1]; // y 坐标

登录后复制

补充

ps:1、Android中如何获取屏幕宽度和高

int screenWidth;

int screenHeight;

WindowManager windowManager = getWindowManager();

Display display = windowManagergetDefaultDisplay();

screenWidth = displaygetWidth();

screenHeight = displaygetHeight();

登录后复制

2、获取某控件的高度getHeight()、宽度getWidth()。

android之View坐标系,获取坐标值,改变控件的位置

3、Android 动态设置控件宽高度

viewgetViewTreeObserver()addOnGlobalLayoutListener(new ViewTreeObserverOnGlobalLayoutListener() {

    

    public void onGlobalLayout() {

        int h = viewgetMeasuredHeight();

    }

});

如果是自定义的控件可以用一下代码TypedArray ta = contextobtainStyledAttributes(attrs, RstyleableMyToggleBtn);// 由attrs 获得 TypeArray,

如果是系统自带的控件,通常控件点get会有对应的获取属性值的方法,如textViewgetHeight,不过有些方法如margin,就要通过layoutparam去获取设置

以上就是关于Android 系统搜索框 如何限制输入字数长度全部的内容,包括:Android 系统搜索框 如何限制输入字数长度、android 动态生成控件,怎么设置控件的大小、android判断两个view之间的距离等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9484854.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存