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之间的距离等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)