Button的使用

不要阴影Button ---> TextView   (5.0新特性)

<!-- 去按钮立体效果 -->
<item name="android:button">@null</item>

TextView和button有什么区别??
使用TextView响应点击事件的时候,必须加上去android:clickable="true"
针对两者之间的区别,进行处理。

mEtPswd.setError("对不起,密码不能为空");  实现的效果,很难看;(了解即可,可以用来提示输入格式错误)

代码触发按钮点击事件

代码是: btn.performClick();   (这里的点击触发好像和butterknife有冲突,没有反应?待定)

把按钮变成不可点击,并且显示倒计时(正在获取)

requestCodeBtn.setClickable(false);

requestCodeBtn.setText("重新发送(" + i-- + ")");   加上一个线程,进行循环、

ImageView的属性

图片不是不能使用jpg格式的,——而是图片的命名,不能全部都是数字,会和R文件冲突;

前景色与背景色的区分,以及scaleType只能配合前景色使用;

<ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/main_bottom_tab_cart" />

background属性控件通用的背景设置,src属性ImageView专有的前景展示;

imgView.setImageResource(R.drawable.*);

// 获取控件的测量高度
originHeight = headerImage.getHeight();    // headerView.getMeasuredHeight();

// 获取图片的真实高度
maxHeight = headerImage.getDrawable().getIntrinsicHeight();   
Log.d("TAG", "originHeight: " + originHeight);

1、设置背景图
SetBackgroundResource(Resource.Drawable.center_lf_bg);
2、清除背景图
SetBackgroundResource(0);

3、Imageview 显示本地绝对路径图片

iv.setImageURI(Uri.fromFile(new File(new File("/sdcard/test.jpg")));

android:scaleType属性

参考文章:

http://www.2cto.com/kf/201301/181290.html

http://liangruijun.blog.51cto.com/3061169/807963/

ImageView.ScaleType.FIT_XY|android:scaleType="fitXY" 把图片按照指定的大小在View中显示,拉伸显示图片,不保持原比例,填满View.

ImageView.ScaleType.CENTER|android:scaleType="center" 以原图的几何中心点和ImagView的几何中心点为基准,按图片的原来size居中显示,不缩放,当图片长/宽超过View的长/宽,则截取图片的居中部分显示ImageView的size.当图片小于View 的长宽时,只显示图片的size,不剪裁。

android:scaleType="centerInside"   以原图的几何中心点和ImagView的几何中心点为基准,将图片的内容完整居中显示,通过按比例缩小原来的size使得图片长(宽)等于或小于ImageView的长(宽)

android:scaleType="center"    针对src的设置,才有效;(可以参考下面的区别)
android:src="@drawable/video_wait"

如果是android:background="@drawable/video_wait",就会无效,填充满控件;

<ImageView
            android:layout_width="43dp"
            android:layout_height="43dp"
            android:scaleType="fitXY"
            android:src="@drawable/ease_default_avatar" />

ImageView的background和src属性有什么区别

ImageButton 是带图标的Button控件,有src的属性,也就是设置他的图标,也有一个所有控件公有的属性background, 这个也可以设置它的“图标”。
其实,src才是设置图标,而background只是设置背景。
如果控件的大小是100*100 图片资源是80*80的话,那么用src,图片就会居中显示,如果使用background那么图片就会被拉伸充满控件。
重要的是,background是底层的图片资源,src是覆盖在background上面的资源,他们可以叠加使用,实现选中的效果。在ActivityGroup用到。

background会根据ImageView组件给定的长宽进行拉伸,而src就存放的是原图的大小,不会进行拉伸 。

src是图片内容(前景),bg是背景,可以同时使用。

此外:scaleType只对src起作用;bg可设置透明度?

比如在ImageButton中就可以用Android:scaleType控制图片的缩放方式

注意:控制的图片为资源而不是背景,即android:src="@drawable/logo",而非android:background="@drawable/logo"。

程序中动态加载图片也类似,如:应该imgView.setImageResource(R.drawable.*);

而非imgView.setBackgroundResource(R.drawable.*);

Drawable和Bitmap的区别

http://blog.csdn.net/kazeik/article/details/17659263

Bitmap - 称作位图,我们理解为一种存储对象比较好。Bitmap是逐像素存储的。存储效率较低。

Drawable - 作为Android平台下通用的图形对象,它可以装载常用格式的图像,

比如GIF、PNG、JPG,当然也支持BMP,当然还提供一些高级的可视化对象,比如渐变、图形等。

Bitmap是Drawable . Drawable不一定是Bitmap .就像拇指是指头,但不是所有的指头都是拇指一样.

Drawable在内存占用和绘制速度这两个非常关键的点上胜过Bitmap

Resources res = getResources();
Drawable drawable = res.getDrawable(R.drawable.img_test);
mCache.put("testDrawable", drawable);

Resources res = getResources();
Bitmap bitmap = BitmapFactory.decodeResource(res, R.drawable.img_test);
mCache.put("testBitmap", bitmap);

Bitmap和Drawable相互转换的方法  http://blog.csdn.net/hezhipin610039/article/details/7899248

Bitmap缩放、获得圆角图片 、Drawable缩放  http://dyh7077063.iteye.com/blog/970672 (关于重绘)

TextView

特殊控件(点赞/取消)

CheckedTextView,就可以设置mTv1.setChecked(true);    点赞 / 取消点赞

Android中动态设置TextView的颜色

还有很多的TextView需要响应点击事件,加上去clickable,
自己写一个自定义的控件么?

tv.setTextColor(Color.rgb(255, 255, 255));

tvcolor.setBackgroundColor(Color.argb(alpha, red, green, blue));  (三原色自由搭配的场景)

tv.setTextColor(Color.parseColor("#FFFFFF"));

tv.setTextColor(getResources().getColor(R.color.my_color));

设置TextView的行间距、行高

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

在代码中设置textview的size
setTextSize(TypedValue.COMPLEX_UNIT_PX,22);  //22像素 
setTextSize(TypedValue.COMPLEX_UNIT_SP,22);  //22 SP 
平时用的少,动态设置时 使用 两个形参那个参数就行

单行显示

android:ellipsize="end"  用于设定当文本内容超出控件宽度时,文本的缩略方式。
android:singleLine="true",该方法已经不建议使用了

TextView最大长度限制,超出部分省略号显示

android:maxEms="7"
android:maxLines="1"
android:ellipsize="end"
android:maxLength="7"    对该功能没有帮助

textview加下划线、删除线

//添加下划线
tv_login_findPassword =(TextView) findViewById(R.id.tv_login_findPassword);
tv_login_findPassword.getPaint().setFlags(Paint. UNDERLINE_TEXT_FLAG ); //下划线

或者这样写.
TextView textView = (TextView)findViewById(R.id.testView);

textView.setText(Html.fromHtml("<u>"+"hahaha"+"</u>"));

//添加删除线
tv.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);

Android TextView中字体加粗

在xml文件中设置字体加粗,相信大家都会了,但是对于中文字体,在xml文件中设置是不起作用的,需要在代码中设置,具体操作可见下面方法,大家有更好的方法可以多多交流啊。

英文字体加粗
布局文件中这样设置即可:
XML/HTML代码  android:textStyle="bold"

// 在代码中设置加粗  
tv.getPaint().setFlags(Paint.FAKE_BOLD_TEXT_FLAG);

中文字体加粗:
TextView textView= new TextView(context);//或从xml导入 
TextPaint paint = textView.getPaint(); 
paint.setFakeBoldText(true);

有些属性在运行apk的时候是被忽略的,只在设计布局的时候有效:

在根布局上面添加这个
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.mxg.demo2.ui.Main3Activity"
在TextView控件中,tools:text="I am a title"         参考资料

tvTitle.setText(null);    // 是可以设置为null的、

实现TextView中文字链接的方式 :(了解一下)

当文字中出现URL、E-mail、电话号码等的时候,可以将TextView的android:autoLink属性设置为相应的的值,

如果是所有的类型都出来就是android:autoLink="all"。

一般有:android:autoLink="web" (email、tel、)

计算TextView的文本长度

String s1 = "3fsd";
int length = s1.length();
tv1.setText(length+"");   // 4

如何限定Android的Text中的输入长度呢?

方法一:可以在layout xml中加上属性android:maxLength
比如:
<EditText
        android:id="@+id/editTextShow"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hint"
        android:cursorVisible="false"
        android:lines="1"
        android:maxLength="16" />
 
方法二:在代码中控制

EditText mEdit = (EditText)findViewById(R.id.mEdit);  
InputFilter[] filters = {new LengthFilter(10)};  
mEdit.setFilters(filters);

方式三:

editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(20)});

android:ems="10" 什么意思

android:maxLength, 限制输入字符数。如设置为5,那么仅可以输入5个汉字/数字/英文字母。
android:ems, 设置TextView的宽度为N个字符的宽度。这里测试为一个汉字字符宽度,如图:(参照API的翻译)

网友解释:

宽度为10个字符的宽度
xml中 android:ems属性 ,作为EditText 默认生成 的属性,其含义是需要编辑的 字符串长度 。
设置为10时,最多编辑 10个em ,一个em单位是 两个inch ,但是随着自动调整,在Android中 em代表‘M’的数量 。
但是 EditText的属性 ,只有在 android:layout_width=“wrap_content” 时,才会显示;
如果是 android:layout_width=“match_parent” 时,则不会有变化。

设置不同样式的文字字体

你可以在程序中放入ttf字体文件,在程序中使用Typeface设置字体。
第一步,在assets目录下新建fonts目录,把ttf字体文件放到这。
第二步,程序中调用:
AssetManager mgr=getAssets();//得到AssetManager
Typeface tf=Typeface.createFromAsset(mgr, "fonts/ttf.ttf");//根据路径得到Typeface
tv.setTypeface(tf);//设置字体

参考文章:http://blog.sina.com.cn/s/blog_8984d3f30100wzb5.html

设置富文本显示-Spannable的使用

在android中,有时候需要对文本进行各种特别的设置,比如颜色、大小、首行缩进,或者是在一段文本中加入图片,甚至是书写一些特殊的公式。

在使用中通常使用Spannable spn = new SpannableString("字符串");或者通过SpannableStringBuilder对象来进行构建。

tv_desc.setText(span, TextView.BufferType.SPANNABLE);

解决Android textview自动换行问题

换行 ---> 直接在字符串里面,加入 \n  就可以了。            \t   相当于tab,缩进

\n 回车, 本义是光标往下一行(不一定到下一行行首),n的英文newline,

\r 换行, 本义是光标重新回到本行开头,r的英文return,

textview自动换行导致混乱的原因了----半角字符与全角字符混乱所致!

一般情况下,我们输入的数字、字母以及英文标点都是半角,所以占位无法确定。

EditText

String count = et_count.getText().toString().trim();
etPhoneNum.setText("");

或者etPhoneNum.getText().clear();

去掉edittext去边框 去下划线

EditText的background属性设置为@null就搞定了
android:background="@null"    style属性倒是可加可不加

解决华为光标颜色设置无效的问题

android:textCursorDrawable="@drawable/edit_cursor"
android:imeOptions="normal"

切换可编辑与不可编辑

Android:editable // 是否可编辑

editText.setEnabled(true);可编辑
editText.setEnabled(false);不可编辑    ——// 字体颜色变灰色

如何让EditText的前5个文字不可编辑

如果是做外包一类项目可以参考用textview+edittext 实现;如果想钻研一下的话你研究下edittext的addTextChangeListener(new TextWathcer(){…})我觉得覆写OnTextChanged应该能达到你的需求!

切换编辑文本是否可见(星号密码格式)

isChecked = !isChecked;
                // ToolUtils.i("密码是否可见 == "+isChecked);
                if (isChecked){ //如果选中,显示密码
                    et_account.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
                }else { //否则隐藏密码
                    et_account.setTransformationMethod(PasswordTransformationMethod.getInstance());
                }

不让EditText自动获取焦点

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

android:focusable="true"

android:focusableInTouchMode="true"

这样,就把EditText默认的行为截断了! http://zhidao.baidu.com/question/485331693.html ( 或者可参考这个说明 )

让EditText自动获得焦点

<EditText
        android:id="@+id/et_string_input"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="input something ..." >
        <requestFocus />
    </EditText>

代码中实现的话,

if (TextUtils.isEmpty(username)) {
    Toast.makeText(this, getResources().getString(R.string.User_name_cannot_be_empty), Toast.LENGTH_SHORT).show();
    userNameEditText.requestFocus();
    return;
}

EditText自动获取焦点时隐藏hint的代码

只需让EditText设置以下的OnFocusChangeListener就可以了
 
   private OnFocusChangeListener mOnFocusChangeListener = new OnFocusChangeListener() {
         @Override
         public void onFocusChange(View v, boolean hasFocus)
         {
             EditText editView = (EditText)v;
             String hint;
             if (hasFocus) {
                 hint = editView.getHint().toString();
                 editView.setTag(hint);
                 editView.setHint("");
             } else {
                 hint = textView.getTag().toString();
                 editView.setHint(hint);
             }
         }
     };

让光标移到末端

EditText et = ... String text = "text";

et.setText(text);

et.setSelection(text.length());

android:cursorVisible="false" 隐藏光标

android:background="#00000000"//不要文本框背景

edittext光标详解

edittext.requestFocusFromTouch();//让光标放入到点击位置。

edittext.requestFocus();//默认方式获得焦点

1.获取光标位置
int index = editText.getSelectionStart();  
2.在光标处插入字符
int index = editText.getSelectionStart();  
Editable editable = editText.getText();  
editable.insert(index, "aaaa");  
3.删除光标前字符
int index = editText.getSelectionStart();  
Editable editable = editText.getText();  
editable.delete(index-1, index);

EditText中android:cursorVisible属性的作用
设定光标为显示/隐藏,默认显示。如果设置false,即使选中了也不显示光标栏。

对于Android中的EditText来说,想要保持光标位于内容最后,
则要保证,先去设置了内容,然后才得到的焦点,即可;
否则先获得了焦点,后续再设置内容,此时焦点肯定是放在内容之前的了,则就需要额外调用setSelection去调整位置了。

【已解决】Android中EditText输入框焦点从文字前面变成文字后面(值得一看)(结论在最后!)

http://www.crifan.com/android_edittext_cursor_content_before_move_to_end_of_content/

一行高的框里面输入了两行文字

将edittext的高度设置成warpcontent,不要写成固定值;

<EditText 
        android:singleLine="false"
        android:gravity="left"
        android:maxLines="2" />

EditText对文本的监听

edittext.addTextChangedListener(new TextWatcher() {  //对输入框中的内容监听、

EditText获取和失去焦点的监听

et_count.setOnFocusChangeListener(new OnFocusChangeListener() {

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 {// 此处为失去焦点时的处理内容}}
}); searchView = (EditText) findViewById(R.id.search_text);
searchView.setOnFocusChangeListener(new android.view.View.OnFocusChangeListener() {@Overridepublic void onFocusChange(View v, boolean hasFocus) {if (hasFocus) {// 此处为得到焦点时的处理内容} else {// 此处为失去焦点时的处理内容}}
});
searchView.setFocusable(true);
searchView.setFocusableInTouchMode(true);
searchView.requestFocus();searchView.clearFocus();//失去焦点
searchView.requestFocus();//获取焦点.setFocusable(true);
searchView.setFocusableInTouchMode(true);
searchView.requestFocus();searchView.clearFocus();//失去焦点
searchView.requestFocus();//获取焦点

点击EditText文本框之外任何地方隐藏键盘的解决办法

重新百度,搜索方案。

EditText的常用属性---待整理

1、EditText输入的文字为密码形式的设置

只能输入密码,可以让EditText显示的内容自动为星号,输入时内容会在1秒内变成*字样。

(1)通过.xml里设置:

把该EditText设为:android:password="true" // 以”.”形式显示文本
android:password="true" 现在被android:inputType="textPassword" 这个代替
(2)在代码里设置:
通过设置EditText的setTransformationMethod()方法来实现隐藏密码或这显示密码。

editText.setTransformationMethod(PasswordTransformationMethod.getInstance());//设置密码为不可见。

2、android:numeric //只接受数字
android:numeric来控制输入的数字类型,android android:numeric="integer"
一共有三种分别为integer(正整数)、signed(带符号整数,有正负)和decimal(浮点数)。

4、EditText设置字体
android:typeface="monospace" //设置字型。字形有:normal, sans, serif,monospace

android:textStyle="bold" 字体,bold, italic, bolditalic android:textSize="20dip" 大小

2. 纯数字 android:numeric="true" 这条可以让输入法自动变为数字输入键盘,同时仅允许0-9的数字输入

12、限定edittext能输入数字和字母,并且默认输入为数字,如身份证号码

android:inputType="number"

android:digits="0123456789xyzXYZ"

12、限定edittext能输入数字和字母,并且默认输入为数字,如身份证号码

android:inputType="number" android:digits="0123456789xyzXYZ"

android:capitalize = "characters" 以大写字母写

仅允许 android:capitalize="cwj1987" 这样仅允许接受输入cwj1987,一般用于密码验证 下面是一些扩展的风格属性

android:singleLine="true" 设置单行输入,一旦设置为true,则文字不会自动换行。——强制输入的内容在单行

android:textColorHint="#ffff00" 设置提示信息文字的颜色,默认为灰色 android:textScaleX="1.5" 控制字与字之间的间距

android:textAppearance="?android:attr/textAppearanceLargeInverse" 文字外观,这里引用的是系统自带的一个外观,?表示系统是否有这种外观,否则使用默认的外观。

10、Enter键图标的设置

软键盘的Enter键默认显示的是“完成”文本,我们知道按Enter建表示前置工作已经准备完毕了,要去什么什么啦。比如,在一个搜索中,我们输入要搜索的文本,然后按Enter表示要去搜索了,但是默认的Enter键显示的是“完成”文本,看着不太合适,不符合搜索的语义,如果能显示“搜索”两个字或者显示一个表示搜索的图标多好。事实证明我们的想法是合理的,Android也为我们提供的这样的功能。通过设置android:imeOptions来改变默认的“完成”文本。这里举几个常用的常量值:

(1)actionUnspecified未指定,对应常量EditorInfo.IME_ACTION_UNSPECIFIED效果:

(2)actionNone 没有动作,对应常量EditorInfo.IME_ACTION_NONE效果:

(3)actionGo去往,对应常量EditorInfo.IME_ACTION_GO 效果:

(4)actionSearch 搜索,对应常量EditorInfo.IME_ACTION_SEARCH效果: 

(5)actionSend 发送,对应常量EditorInfo.IME_ACTION_SEND效果:

(6)actionNext 下一个,对应常量EditorInfo.IME_ACTION_NEXT效果:

(7)actionDone 完成,对应常量EditorInfo.IME_ACTION_DONE效果:

2. 纯数字 android:numeric="true" 这条可以让输入法自动变为数字输入键盘,同时仅允许0-9的数字输入

2. 纯数字 android:numeric="true" 这条可以让输入法自动变为数字输入键盘,同时仅允许0-9的数字输入

Android开发之EditText属性详解+++ImageView的属性相关推荐

  1. android中oncreate方法,android开发之onCreate( )方法详解

    这里我们只关注一句话:This is where you should do all of your normal static set up.其中我们只关注normal static, normal ...

  2. android开发之onCreate( )方法详解

    android开发之onCreate( )方法详解 onCreate( )方法是android应用程序中最常见的方法之一,那么,我们在使用onCreate()方法的时候应该注意哪些问题呢? 先看看Go ...

  3. android开发之Parcelable使用详解

    想要在两个activity之间传递对象,那么这个对象必须序列化,android中序列化一个对象有两种方式,一种是实现Serializable接口,这个非常简单,只需要声明一下就可以了,不痛不痒.但是a ...

  4. Android开发之CoordinatorLayout使用详解一

    2019独角兽企业重金招聘Python工程师标准>>> 主页:http://cherylgood.cn/20170302/51 官网描述为:CoordinatorLayout是一个增 ...

  5. android idata 模式,Android快速开发之appBase——(3).详解IHolder和IData

    Android快速开发之appBase--(3).详解IHolder和IData IHolder和IData是AVLib的两个组件,在前面已经使用过了,那么这一篇将会详细说明这两个组件的用法. IHo ...

  6. Android快速开发之appBase——(4).详解com.snicesoft.Application和BaseActivity

    转载请注明本文出自JFlex的博客http://blog.csdn.net/jflex/article/details/46441571,请尊重他人的辛勤劳动成果,谢谢! Android快速开发之ap ...

  7. iOS开发之Accounts框架详解

    2019独角兽企业重金招聘Python工程师标准>>> iOS开发之Accounts框架详解 Accounts框架是iOS原生提供的一套账户管理框架,其支持Facebook,新浪微博 ...

  8. layui添加复选框_对layui初始化列表的CheckBox属性详解,初始化属性

    对layui初始化列表的CheckBox属性详解,初始化属性 通常layui前端页面完全按照layui官网的例子写所有的页面初始化都没有问题,但是那只是静态页面.当加入后台去动态加载页面的时候有写样式 ...

  9. Android 开发之EditText属性详解

    EditText & TextView 属性详解: android:layout_gravity="center_vertical" 设置控件显示的位置:默认top. an ...

最新文章

  1. 【PAT乙级】1013 数素数 (20 分)
  2. 从单体到混乱的微服务,阿里云托管式服务网格是如何诞生的?
  3. bigdecimal不保留小数_金钱要使用BigDecimal数据类型(使用double的已经被公司开除了)...
  4. Eclipse安装低版本4.3并安装FatJar打包插件来打包引用第三方jar包的项目成jar包
  5. K8S部署工具:KubeOperator系统设置
  6. javascript总结9:JavaScript三目运算符
  7. 配置u-boot的ip、网卡ip的命令
  8. linux共享数据,使用Linux共享数据对象
  9. 【Maccmsv10 站群深度定制版 开发日志】核心功能:紧急优化模块
  10. ubuntu 安装J2EE环境
  11. 力扣-746. 使用最小花费爬楼梯
  12. 网络七层协议(转载)
  13. 开始→运行(cmd)命令大全(绝对经典)
  14. 共谋发展:软件孵化器与软件开发云
  15. bzoj 5185 Lifeguards - 动态规划 - 贪心
  16. MP | 东农吴凤芝/南农韦中-根系分泌物介导的植物种间互作塑造了根际微生物组抑病力...
  17. 有没有被坦克大战支配过?
  18. surface pen未接触屏幕就有反应 解决办法
  19. Profile Lookup-FCC
  20. 《天穗之咲稻姬》游玩感想

热门文章

  1. 给图片的一个部分加链接
  2. Kdevelop如何调整程序的字体大小和颜色
  3. 那些年,我们在Android机型适配上遇到的坑丨之Camera拍照时快门咔嚓声
  4. 2020-02-06
  5. 生命是如此的轻,又是如此的重
  6. 现代化蔬菜大棚采用什么和计算机自动控制,温室大棚中温室自动化控制系统解决方案设计...
  7. 动态代理的两种实现方式
  8. css布局 图片大小,CSS3 使用网格布局实现的不同尺寸照片墙
  9. 二分法的一种通用写法
  10. CG CTF web 上