目录

一、TextView设置字体大小setTextSize()方法参数选择单位

二、TextView设置颜色setTextColor()方法的参数选择

三、相对布局RelativeLayout中android:layout_toLeftOf="@id/sso_send_sms_code"的实现

四、RelativeLayout.LayoutParams变量设置边界无效的解决方案

五、EditText控件中设置输入类型的XML和Java写法并设置长度限制(使用过滤器)

六、android:descendantFocusability = "blocksDescendants"

七、TextView android:lineSpacingMultiplier = "1.3"

 


 

一、TextView设置字体大小setTextSize()方法参数选择单位

UI设计给出的界面中字体有大小,比如25sp,然后mTextView.setTextSize(25),通过该方法设置是选择默认单位。翻阅了下API,截图如下:

还有一个重载的方法setTextSize(int unit, int size);

对于第一个参数,可取下列值:标记了单位

TypedValue.COMPLEX_UNIT_PX : PixelsTypedValue.COMPLEX_UNIT_SP : Scaled PixelsTypedValue.COMPLEX_UNIT_DIP : Device Independent Pixels

二、TextView设置颜色setTextColor()方法的参数选择

翻API或者在IDE中输入都会发现其有两个重载,如图:

第一个比较好理解:setTextColor(Color.parseColor("#ff3eff04"));

第二个涉及一个新类:ColorStateList,状态列表。其实根据第一个方法可知,就是设置normal,selected,focused不同状态下对应的颜色值。

先贴下XML中对ColorStateList的实现方式:

                    

再来贴下Java中对ColorStateList的实现方式

/** 对TextView设置不同状态时其文字颜色。 */      private ColorStateList createColorStateList(int normal, int pressed, int focused, int unable) {          int[] colors = new int[] { pressed, focused, normal, focused, unable, normal };          int[][] states = new int[6][];          states[0] = new int[] { android.R.attr.state_pressed, android.R.attr.state_enabled };          states[1] = new int[] { android.R.attr.state_enabled, android.R.attr.state_focused };          states[2] = new int[] { android.R.attr.state_enabled };          states[3] = new int[] { android.R.attr.state_focused };          states[4] = new int[] { android.R.attr.state_window_focused };          states[5] = new int[] {};          ColorStateList colorList = new ColorStateList(states, colors);          return colorList;      }  

三、相对布局RelativeLayout中android:layout_toLeftOf="@id/sso_send_sms_code"的实现

打开API之后,找各种方法,终于看到了一个类似的:

因此代码可以写成:其中layoutParams1为RelativeLayout.LayoutParams变量

        layoutParams1.addRule(RelativeLayout.LEFT_OF,mResendValidCodeTxt.getId());

四、RelativeLayout.LayoutParams变量设置边界无效的解决方案

无效的代码:

RelativeLayout.LayoutParams relativeLayoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,50);relativeLayoutParams.setMargins(30,30,30,0);    

有效代码:

LinearLayout.LayoutParams relativeLayoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,50);relativeLayoutParams.setMargins(30,30,30,0);    

说明:在Root(根布局为LinearLayout)视图下,子视图间设置边距,使用RelativeLayout无效,虽然当前的子视图是RelativeLayout布局。

对应转换之前的XML文件


五、EditText控件中设置输入类型的XML和Java写法并设置长度限制(使用过滤器)

其XML文件代码:

转换成Java代码

mValidCodeView.setInputType(InputType.TYPE_CLASS_NUMBER);mValidCodeView.setFilters(new InputFilter[]{new InputFilter.LengthFilter(6)});  //对应布局中的android:maxLength=6mValidCodeView.setHint("验证码");

此处需要贴一下API,感悟下心得:你要的东西,在API中都可以找到,需要做的是去找,如果还不能记住的话。

API中会给出XML对应的Java函数。此乃其一。

此乃其二。过滤器setFilters()的详细信息不在此贴API了,知道去哪找就好。


六、android:descendantFocusability = "blocksDescendants"

其转为Java的表述为:

LinearLayout rootLayout = new LinearLayout(mContext);        LinearLayout.LayoutParams rootParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);        rootLayout.setOrientation(LinearLayout.VERTICAL);        rootLayout.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);        rootLayout.setBackgroundColor(Color.TRANSPARENT);       //透明

含义:

主要是焦点的传递问题,子视图是否可以获取焦点。

beforeDescendants:viewgroup会优先其子类控件而获取到焦点

        afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点

        blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点


七、TextView android:lineSpacingMultiplier = "1.3"

设置线宽,转成Java

 mTipTv.setLineSpacing(0,1.3f);

该方法有两个参数,add 和 mult

计算结果为: 原单位*mult + add。

所以,上面结果为 :1 * 1.3 + 0 = 1.3


八、

 

 

更多相关文章

  1. Android总结 - System UI Mode
  2. Android5.0 新特性学习总结
  3. Android(安卓)上网流量监控方法
  4. [安卓开发Android] RecyclerView 类型与点击事件的用法
  5. Android(安卓)通过 intent传值获得null
  6. Android中将View的内容保存为图像的方法
  7. Android布局之RelativeLayout
  8. Android之使用NotificationListenerService使得自己的应用不被杀
  9. Android之WebView和js交互-调用失败的看这里

随机推荐

  1. android sdk3.0 鈥滃嘲宸⑩€濆垵浣撻獙
  2. 2010:Android 商机之年
  3. Android自适应不同屏幕几种方法
  4. Mac下Android(安卓)Studio 生成jniLibs目
  5. Android Frameworks系列(一) startServic
  6. 一个资深的Android开发者需要掌握哪些技
  7. Android listview中item部分区域添加点击
  8. 你不知道的Runnable接口,深度解析Runnable
  9. Android 驱动和系统开发. 一个简单的例子
  10. 为什么Looper.loop()死循环不会导致ANR