EditText

来源:互联网 发布:巨人网络2018校招面试 编辑:程序博客网 时间:2024/06/01 08:40

Android 如何让EditText不自动获取焦点

在项目中,一进入一个页面, EditText默认就会自动获取焦点。

那么如何取消这个默认行为呢?

在网上找了好久,有点 监听软键盘事件,有点 调用 clearFouse()方法,但是测试了都没有! xml中也找不到相应的属性可以关闭这个默认行

解决之道:在EditText的父级控件中找一个,设置成

   android:focusable="true"     android:focusableInTouchMode="true"这样,就把EditText默认的行为截断了!

Andr设置控件的透明度

android:alpha="0.5"

EditText searchView = (EditText) findViewById(R.id.search_text);searchView.setOnFocusChangeListener(new android.view.View.OnFocusChangeListener() {@Overridepublic void onFocusChange(View v, boolean hasFocus) {if (hasFocus) {// 此处为得到焦点时的处理内容} else {// 此处为失去焦点时的处理内容}}});


设置EditText自动获取焦点并弹出输入法

// 获取编辑框焦点editText.setFocusable(true);//打开软键盘InputMethodManager imm = (InputMethodManager)MainActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE);imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);//关闭软键盘imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);

 Android系统中TextView默认行间距比较窄,不美观。

    我们可以设置每行的行间距,可以通过属性android:lineSpacingExtra或android:lineSpacingMultiplier来做。

在你要设置的TextView中加入如下代码:

1、android:lineSpacingExtra 
设置行间距,如”8dp”。

2、android:lineSpacingMultiplier 
设置行间距的倍数,如”1.5″。

通过获取控件上面的数字,进行拨打电话

phone_text.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Intent intent = new Intent(Intent.ACTION_DIAL);                Uri data = Uri.parse("tel:" + phone_text.getText());                intent.setData(data);                startActivity(intent);            }        });


实现textview最后一行只显示一半的效果 

这里写图片描述

不知道大家有没有接到过这种需求,textview要求最大3行,并且最后一行只显示一半,以省略号结尾

一开始觉得很蛋疼,一直没有好的思路,后来想到一种方案,就是用textview的paint可以计算出整个String的需要的宽度stringWidth,并且能计算出textview tvWidth的宽度
就可以推导出一个公式

line = stringWidth / tvWidth

这个line就是textview需要的行数

如果行数超过我们预期的行数,我们可以对String取子串

public static String getSubString(TextView tv, String content, int maxLine){    float width = tv.getPaint().measureText(content);    //这里只是为了方便,用屏幕宽度代替了textview控件宽度,如果需要精准控制,可以换成控件宽度    float tvWidth = activity.getWindowManager().getDefaultDisplay().getWidth();    if(width / tvWidth > (maxLine + 0.5)){    return content.substring(0,(int)(content.length()/(width/tvWidth)/(maxLine + 0.5))) + "...";    }    return content;}
  • 1

这里写图片描述

如果你想要显示2.5行 就可以传入maxLine=2
如果想显示2.3行,就把方法里的0.5改成0.3


要控制EditText单行显示需要同时设置

android:singleLine="true"

和android:maxLines="1";

<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"    android:shape="rectangle">    <!-- 矩形的圆角弧度 -->    <corners android:radius="8dp" />    <!-- 矩形的填充色 -->    <solid android:color="@color/black" />    <!--<stroke-->        <!--android:width="0.5dp"-->        <!--android:color="#4eb621" />-->
</shape>