如何设置TextView控件的背景透明度和字体透明度

时间:2023-02-01 03:34:11

转载: http://m.blog.csdn.net/blog/song_shi_chao/17533113#

[原]android TextView setTextSize, 设置背景透明度和字体透明度


我在代码中new 了一个TextView,想设置textview文字大小,数值从values/integer.xml中取的,设置的30,(设计师标注是30),如果写在xml中应该是这样:android:textSize="15sp",那么在代码中设置,感觉实际效果总是很大,和设计师的设计图差别很大。


  TextView tv = new TextView(getContext());
  tv.setTextSize(getContext().getResources().getInteger(R.integer.main_text_size));

下面是查到的,果然如此:
在帮TextView控件设置大小的时候,发现和在XML中用PX设置的不一样,原因是setTextSize()默认的单位是sp,可以用另一个设置字体大小的方法:
setTextSize(int unit, int size)
第一个参数可设置如下静态变量:
TypedValue.COMPLEX_UNIT_PX : Pixels
TypedValue.COMPLEX_UNIT_SP : Scaled Pixels
TypedValue.COMPLEX_UNIT_DIP : Device Independent Pixels

////////////////////////////////

如何设置TextView控件的背景透明度和字体透明度

设计师给的标注都是类似这样的:

字号:26

颜色:#000000

透明度:80%


其实,程序上只要需要一个色值就OK了,那么这个色值我如何计算呢?


TextView tv = (TextView) findViewById(R.id.xx);

第1种:tv.setBackgroundColor(Color.argb(255, 0, 255, 0)); //背景透明度  

        tv.setTextColor(Color.argb(255, 0, 255, 0));   //文字透明度


第2种:tv.setTextColor(0xffff00ff);

0xffff00ff是int类型的数据,分组一下0x|ff|ff00ff,0x是代表颜色整数的标记,ff是表示透明度,ff00ff表示颜色,注意:这里ffff00ff必须是8个的颜色表示,不接受ff00ff这种6个的颜色表示。

颜色和不透明度 (alpha) 值以十六进制表示法表示。任何一种颜色的值范围都是 0 到 255(00 到 ff)。对于 alpha,00 表示完全透明,ff 表示完全不透明。表达式顺序是“aabbggrr”,其中“aa=alpha”(00 到 ff);“bb=blue”(00 到 ff);“gg=green”(00到ff);“rr=red”(00 到 ff)。例如,如果设置字体颜色的不透明度为 50% 的蓝色,则应指定以下值:7fff0000(如何把十进制的50换算成十六进制的50:十进制到其他进制用除,一直除到商为0,然后每次余数逆序排列就是结果,其他进制到十进制用乘,比如此处用到除法,80/16商5余0,再用前一次的商除16得商0余5,停止相除,逆序排列余数得到0x50)。


第3种:在xml文件中直接设置颜色值,同下。

Button或者ImageButton的背景设为透明或者半透明

xml文件

半透明<Button Android:background="#e0000000" ... />

透明<Button android:background="#00000000" ... />

Java代码

View v = findViewById(R.id.xx);//找到你要设透明背景的layout 的id

v.getBackground().setAlpha(100);//0~255透明度值



其实,主要根据第二种方法的原理,把透明度转换为色值。就是根据透明度转换为色值,放在前两位:


透明度转换可以参照下表:
透明度 对应十六进制
100% ff
90% e6
85% d9
80% cc
70% b3
60% 99
50% 80
40% 66
30% 4d
20% 33
15% 26
10% 1a
5% 0d
0% 00