ScrollView与EditText焦点、输⼊法弹出问题、常⽤属性随记
1、EditText弹出软键盘遮住输⼊框问题
在Activity中添加配置
在该Activity中的onCretae()的tContentView()⽅法前⾯添加:getWindow().tSoftInputMode(_INPUT_ADJUST_PAN)
含义:把整个Layout顶上去露出获得焦点的EditText,不压缩多余空间.
解释他们的含义:
SOFT_INPUT_ADJUST_NOTHING:不调整(输⼊法完全直接覆盖住,未开放此参数);
SOFT_INPUT_ADJUST_PAN:把整个Layout顶上去露出获得焦点的EditText,不压缩多余空间
SOFT_INPUT_ADJUST_RESIZE:整个Layout重新编排,重新分配多余空间;
SOFT_INPUT_ADJUST_UNSPECIFIED:系统⾃⼰根据内容⾃⾏选择上两种⽅式的⼀种执⾏(默认配置).
这⾥SOFT_INPUT_ADJUST_RESIZE和SOFT_INPUT_ADJUST_PAN和上⾯中的adjustResize和adjustPan效果是⼀样的.
@Overrideprotected
voidonCreate(@NullableBundlesavedInstanceState){
te(savedInstanceState);
//让布局向上移来显⽰软键盘
getWindow().tSoftInputMode(_INPUT_ADJUST_PAN);
tContentView(ty_login);
init();
}
2、EditText和ScrollView连⽤导致EdtiText⽆法获取焦点或焦点⼀闪⽽逝
在布局⽂件xml⾥
ScrollView标签添加属性android:descendantFocusability="blocksDescendants"//后代可聚焦性
EditText标签添加属性android:clickable="true"//可点击
android:focusable="true"//可获取焦点
android:enabled="true"//启⽤
3、实现点击EditText外部隐藏输⼊法且EditText失去焦点(这块焦点逻辑可⽤于其他控件标签)
(1)重写dispatchTouchEvent
@Override
publicbooleandispatchTouchEvent(MotionEventev){
if(ion()==_DOWN){
Viewv=getCurrentFocus();
if(isShouldHideInput(v,ev)){//判断当前点击屏幕的地⽅是否是软键盘
tFocusables(mETProjectName,fal);//使EditText失去焦点,参数2位true则获取焦点,记得在合适的地⽅⾄true,否则ET将⽆法获取焦点
if(hideSoftInputMethod(this,v)){//隐藏输⼊法软键盘
returntrue;//隐藏键盘时,其他控件不响应点击事件==》注释则不拦截点击事件
}
}
}
chTouchEvent(ev);
}
privatevoidtFocusables(EditTexteditText,Booleanb){
getWindow().tSoftInputMode(_INPUT_ADJUST_PAN);//把整个Layout顶上去露出获得焦点的EditText,不压缩多余空间
usable(b);
usableInTouchMode(b);
tFocus();
}
/**
*判断当前点击屏幕的地⽅是否是软键盘
*@paramv
*@paramevent
*@return
*/
publicstaticbooleanisShouldHideInput(Viewv,MotionEventevent){
if(v!=null&&(vinstanceofEditText)){
int[]leftTop={0,0};
ationInWindow(leftTop);
intleft=leftTop[0],top=leftTop[1],bottom=top+ght(),right=left
+th();
if(()>left&&()
&&()>top&&()
//保留点击EditText的事件
returnfal;
}el{
returntrue;
}
}
returnfal;
}
/**
*隐藏软键盘
*@paramcontext
*@paramv
*@return
*/
publicstaticBooleanhideSoftInputMethod(Contextcontext,Viewv){
InputMethodManagerimm=(InputMethodManager)context
.getSystemService(_METHOD_SERVICE);
if(imm!=null){
ftInputFromWindow(dowToken(),0);
}
returnfal;
}
4、EditText输⼊的⽂字为密码形式的设置
(1)通过.xml⾥设置:
把该EditText设为:android:password="true"//以”.”形式显⽰⽂本
(2)在代码⾥设置:
通过设置EditText的tTransformationMethod()⽅法来实现隐藏密码或这显⽰密码。
nsformationMethod(tance());//设置密码为不可见。
5、EditText输⼊的⽂字为电话号码
Android:phoneNumber=”true”//输⼊电话号码
6、EditText字数限制的设置
(1)在.xml中设置:android:maxLength=“50”
(2)代码中设置:
ters(newInputFilter[]{Filter(100)});
7、EditText设置字体
android:typeface="monospace"//设置字型。字形有:normal,sans,rif,monospace
android:numeric="integer"//只接受数字android:numeric来控制输⼊的数字类型,⼀共有三种分别为integer(正整数)、signed(带符号整数,有正负)和decimal(浮
8、在EditText中软键盘的调起、关闭
(1)EditText有焦点(focusable为true)阻⽌输⼊法弹出
editText=(EditText)findViewById(y);
ouchListener(newOnTouchListener(){
publicbooleanonTouch(Viewv,MotionEventevent){
utType(_NULL);//关闭软键盘
returnfal;
}
});
(2)当EidtText⽆焦点(focusable=fal)时阻⽌输⼊法弹出
InputMethodManagerimm=
(InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
ftInputFromWindow(dowToken(),0);
(3)调⽤数字键盘并设置输⼊类型和键盘为英⽂
utType(_CLASS_NUMBER);//调⽤数字键盘
utType(_TEXT_FLAG_MULTI_LINE);//设置输⼊类型和键盘为英⽂或者:android:inputType="textUri|textMultiLine"
(4)android:focusable="fal"//键盘永远不会弹出
//关闭键盘(⽐如输⼊结束后执⾏)InputMethodManagerimm=(InputMethodManager)getSystemService(_METHOD_SERVICE);ftInp
//⾃动弹出键盘
((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE)).toggleSoftInput(0,_NOT_ALWAYS);
tFocus();//让EditText获得焦点,但是获得焦点并不会⾃动弹出键盘
9、android:padding和android:layout_margin区别
这两个都可以设置边距,但有细微的区别:
(1)android:padding是相对⽗view的边距
(2)android:layout_margin是相对同⼀级View的边距
例:LinearLayout是⽔平布局,下⾯有两个按钮,
(a)如果右边的按钮想距左边的按钮15px,因为这两个按钮是同⼀级的,应该⽤android:layout_margin;
(b)如果右边的按钮想距左边的距离为350px,应该⽤android:padding
10、android:layout_gravity和android:gravity的区别
(1)android:layout_gravity是本元素对⽗元素的重⼒⽅向。
(2)android:gravity是本元素所有⼦元素的重⼒⽅向
11、使⽤android:imeOptinos可对Android⾃带的软键盘进⾏⼀些界⾯上的设置:
android:imeOptions="flagNoExtractUi"//使软键盘不全屏显⽰,只占⽤⼀部分屏幕同时,这个属性还能控件软键盘右下⾓按键的显⽰内容,默认情况下为回车键android:
12、限定edittext能输⼊数字和字母,并且默认输⼊为数字,如⾝份证号码
android:inputType="number"android:digits="xyzXYZ"//指定输⼊法的类型,int类型,可以⽤|选择多个。取值可以参考:ype类。取值
13、edittext光标详解
tFocusFromTouch();//让光标放⼊到点击位置。tFocus();//默认⽅式获得焦点
EditTexteditor=(EditText)getCurrentView();//光标处插⼊intcursor=ectionStart();t().inrt(cursor,delta);
让光标移到末端(这样⽂字就会向前显⽰)EditTextet=...Stringtext="text";t(text);ection(());
android:cursorVisible="fal"隐藏光标
android:background="#00000000"//不要⽂本框背景
14、EditText常⽤属性汇总
android:layout_gravity="center_vertical"设置控件显⽰的位置:默认top,这⾥居中显⽰,还有bottomandroid:hint="请输⼊数字!"
设置显⽰在空间上的提⽰信息android:numeric="integer"设置只能输⼊整数,如果是⼩数则是:
decimalandroid:singleLine="true"设置单⾏输⼊,⼀旦设置为true,则⽂字不会⾃动换⾏。
android:password="true"设置只能输⼊密码
android:textColor="#ff8c00"字体颜⾊
android:textStyle="bold"字体,bold,italic,bolditalicandroid:textSize="20dip"⼤⼩
android:capitalize="characters"以⼤写字母写
android:textAlign="center"EditText没有这个属性,但TextView有android:textColorHighlight="#cccccc"被选中⽂字的底⾊,默认为蓝⾊
android:textColorHint="#ffff00"设置提⽰信息⽂字的颜⾊,默认为灰⾊android:textScaleX="1.5"控制字与字之间的间距
android:typeface="monospace"字型,normal,sans,rif,monospaceandroid:background="@null"空间背景,这⾥没有,指透明
android:layout_weight="1"权重,控制控件之间的地位,在控制控件显⽰的⼤⼩时蛮有⽤的。
android:textAppearance="?android:attr/textAppearanceLargeInver"⽂字外观,这⾥引⽤的是系统⾃带的⼀个外观,?表⽰系统是否有这种外观,否则使⽤默认的
1.密码框属性android:password="true"这条可以让EditText显⽰的内容⾃动为星号,输⼊时内容会在1秒内变成*字样。
2.纯数字android:numeric="true"这条可以让输⼊法⾃动变为数字输⼊键盘,同时仅允许0-9的数字输⼊
3.仅允许android:capitalize="cwj1987"这样仅允许接受输⼊cwj1987,⼀般⽤于密码验证下⾯是⼀些扩展的风格属性
android:editable="fal"设置EditText不可编辑
android:singleLine="true"强制输⼊的内容在单⾏
android:ellipsize="end"⾃动隐藏尾部溢出数据,⼀般⽤于⽂字内容过长⼀⾏⽆法全部显⽰时
本文发布于:2023-03-01 10:50:50,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/167763905093636.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:软键盘怎么调出来.doc
本文 PDF 下载地址:软键盘怎么调出来.pdf
留言与评论(共有 0 条评论) |