android textview边框size 默认是多少?

酷勤网 C 程序员的那点事!
当前位置: >
浏览次数:次
Android开发的16条小经验总结,希望对各位搞Android开发的朋友有所帮助。
1. TextView中的getTextSize返回值是以像素(px)为单位的,
而setTextSize()是以sp为单位的.
所以如果直接用返回的值来设置会出错,解决办法是用setTextSize()的另外一种形式,可以指定单位:
setTextSize(intunit,intsize)
PLEX_UNIT_PX:Pixels
PLEX_UNIT_SP:ScaledPixels
PLEX_UNIT_DIP:DeviceIndependentPixels
2. 在继承自View时,绘制bitmap时,需要将图片放到新建的drawable-xdpi中,否则容易出现绘制大小发生改变
3. 在文字中加下划线: textView.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);
4. scrollView是继承自frameLayout,所以在使用LayoutParams时需要用frameLayout的
5.在Android中几种网络编程的方式:
(1)针对TCP/IP的Socket、ServerSocket
(2)针对UDP的DatagramSocket、DatagramPackage。这里需要注意的是,考虑到Android设备通常是手持终端,IP都是随着上网进行分配的。不是固定的。因此开发也是有 一点与普通互联网应用有所差异的。
(3)针对直接URL的HttpURLConnection
(4)Google集成了Apache HTTP客户端,可使用HTTP进行网络编程。针对HTTP,Google集成了Appache Http core和httpclient 4版本,因此特别注意Android不支持 httpclient 3.x系列,而且目前并不支持Multipart(MIME),需要自行添加httpmime.jar
(5)使用Web Service。Android可以通过开源包如去支持Xmlrpc和Jsonrpc,另外也可以用Ksoap2去实现Webservice
(6) 直接使用WebView视图组件显示网页。基于WebView 进行开发,Google已经提供了一个基于chrome-lite的Web浏览器,直接就可以进行上网浏览网页。
6. TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)
这个是我们最常用的一个构造方法,
float fromXDelta:这个参数表示动画开始的点离当前View X坐标上的差值;
float toXDelta, 这个参数表示动画结束的点离当前View X坐标上的差值;
float fromYDelta, 这个参数表示动画开始的点离当前View Y坐标上的差值;
float toYDelta)这个参数表示动画开始的点离当前View Y坐标上的差值;
如果view在A(x,y)点 那么动画就是从B点(x+fromXDelta, y+fromYDelta)点移动到C 点 (x+toXDelta,y+toYDelta)点.
7.android提供了几种在其他线程中访问UI线程的方法。
Activity.runOnUiThread( Runnable )
View.post( Runnable )
View.postDelayed( Runnable, long )
从网上获取一个网页,在一个TextView中将其源代码显示出来
packageorg.unique.
importjava.io.ByteArrayOutputS
importjava.io.InputS
importjava.util.ArrayL
importorg.apache.http.HttpE
importorg.apache.http.HttpR
importorg.apache.http.client.HttpC
importorg.apache.http.client.methods.HttpG
importorg.apache.http.impl.client.DefaultHttpC
importandroid.app.A
importandroid.app.ProgressD
importandroid.content.C
importandroid.content.DialogI
importandroid.os.AsyncT
importandroid.os.B
importandroid.os.H
importandroid.os.M
importandroid.view.V
importandroid.widget.B
importandroid.widget.EditT
importandroid.widget.TextV
publicclassNetworkActivityextendsActivity{
privateTextV
privateEditT
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.network);
message=(TextView)findViewById(R.id.message);
url=(EditText)findViewById(R.id.url);
open=(Button)findViewById(R.id.open);
open.setOnClickListener(newView.OnClickListener(){
publicvoidonClick(Viewarg0){
connect();
privatevoidconnect(){
PageTasktask=newPageTask(this);
task.execute(url.getText().toString());
classPageTaskextendsAsyncTask&String,Integer,String&{
//可变长的输入参数,与AsyncTask.exucute()对应
publicPageTask(Contextcontext){
pdialog=newProgressDialog(context,0);
pdialog.setButton(&cancel&,newDialogInterface.OnClickListener(){
publicvoidonClick(DialogInterfacedialog,inti){
dialog.cancel();
pdialog.setOnCancelListener(newDialogInterface.OnCancelListener(){
publicvoidonCancel(DialogInterfacedialog){
pdialog.setCancelable(true);
pdialog.setMax(100);
pdialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pdialog.show();
protectedStringdoInBackground(String...params){
HttpClientclient=newDefaultHttpClient();
//params[0]代表连接的url
HttpGetget=newHttpGet(params[0]);
HttpResponseresponse=client.execute(get);
HttpEntityentity=response.getEntity();
longlength=entity.getContentLength();
InputStreamis=entity.getContent();
if(is!=null){
ByteArrayOutputStreambaos=newByteArrayOutputStream();
byte[]buf=newbyte[128];
intcount=0;
while((ch=is.read(buf))!=-1){
baos.write(buf,0,ch);
if(length&0){
//如果知道响应的长度,调用publishProgress()更新进度
publishProgress((int)((count/(float)length)*100));
//让线程休眠100ms
Thread.sleep(100);
s=newString(baos.toByteArray());}
//返回结果
}catch(Exceptione){
e.printStackTrace();
protectedvoidonCancelled(){
super.onCancelled();
protectedvoidonPostExecute(Stringresult){
//返回HTML页面的内容
message.setText(result);
pdialog.dismiss();
protectedvoidonPreExecute(){
//任务启动,可以在这里显示一个对话框,这里简单处理
message.setText(R.string.task_started);
protectedvoidonProgressUpdate(Integer...values){
//更新进度
System.out.println(&&+values[0]);
message.setText(&&+values[0]);
pdialog.setProgress(values[0]);
8.Spinner不能用在dialog和tabhost中的解决办法
9. eclipse关联JDK源码
(1).点 &window&-& &Preferences& -& &Java& -& &Installed JRES&
(2).此时&Installed JRES&右边是列表窗格,列出了系统中的 JRE 环境,选择你的JRE,然后点边上的 &Edit&&, 会出现一个窗口(Edit JRE)
(3).选中rt.jar文件的这一项:&c:program filesjavajre_1.5.0_06librt.jar&点 左边的&+& 号展开它,
(4).展开后,可以看到&Source Attachment:(none)&,点这一项,点右边的按钮&Source Attachment&&, 选择你的JDK目录下的 &src.zip&文件
10.Unable to open sync connection!
把设置里的USB调试重启
11.EditText设置光标位置问题
EditText中有一些预置文本的时候,想把光标调到最前面,一开始是使用的setSelection(0),结果发现在三星P1000上面有问题。经过研究发现需要先调用EditText.requestFocus(),再调用setSelection(0)。否则的话,在2.x的机器上有问题,但3.x上面是好着的。
12.Android中Home键被系统保留,无法象监听回退键一样用onKeyDown,但是可以根据按下home键时会触发的activity和view的一些事件来添加自己的处理代码.网上有人说可以用onAttachWindow来拦截Home键,没试过
13.在用surfaceView渲染时,如果要想在需要时其中出现其他View,可以将surfaceView和其他View放在layout中,平常时可以将其他view隐藏
14.使用android:imeOptinos可对Android自带的软键盘进行一些界面上的设置:
android:imeOptions=&flagNoExtractUi&//使软键盘不全屏显示,只占用一部分屏幕
同时,这个属性还能控件软键盘右下角按键的显示内容,默认情况下为回车键
android:imeOptions=&actionNone&//输入框右侧不带任何提示
android:imeOptions=&actionGo&//右下角按键内容为'开始'
android:imeOptions=&actionSearch&//右下角按键为放大镜图片,搜索
android:imeOptions=&actionSend&//右下角按键内容为'发送'
android:imeOptions=&actionNext&//右下角按键内容为'下一步'
android:imeOptions=&actionDone&//右下角按键内容为'完成'
15.为TextView添加阴影
&stylename=&Overlay&&
&itemname=&android:paddingLeft&&2dip&/item&
&itemname=&android:paddingBottom&&2dip&/item&
&itemname=&android:textColor&&#ffffff&/item&
&itemname=&android:textSize&&12sp&/item&
&itemname=&android:shadowColor&&#00ff00&/item&
&itemname=&android:shadowDx&&5&/item&
&itemname=&android:shadowDy&&3&/item&
&itemname=&android:shadowRadius&&6&/item&
&TextViewandroid:id=&@+id/test&
android:layout_width=&fill_parent&
android:layout_height=&wrap_content&
style=&@style/&spanstyle=&background-color:rgb(250,250,250);font-family:Helvetica,Tahoma,Arial,sans-&&Overlay&/span&&
android:text=&test&
android:gravity=&center&/&
16.如何将TextView中的中文设置成粗体?
在xml文件中使用android:textStyle=&bold& 可以将英文设置成粗体,但是不能将中文设置成粗体,将中文设置成粗体的方法是:
TextView tv = (TextView)findViewById(R.id.TextView01);
TextPaint tp = tv.getPaint();
tp.setFakeBoldText(true);
& 相关主题:> 最新res索引讲解(drawable、layout、values等目录的分辨率和layout的横竖屏,以及values的多语言)
最新res索引讲解(drawable、layout、values等目录的分辨率和layout的横竖屏,以及values的多语言)
wangchen0924 & &
发布时间: & &
浏览:44 & &
回复:0 & &
悬赏:0.0希赛币
最新res目录讲解(drawable、layout、values等目录的分辨率和layout的横竖屏,以及values的多语言)  我们建好一个android 的项目后,默认的res下面 有drawable、layout、values等目录
1.drawable目录相关
  启开一个新的Android专案后在res资料夹内会有
drawable-hdpi
drawable-mdpi
  drawable-ldpi
  drawable-xhdpi
  drawable-xxhdpi
  三个目录,所定义的dpi皆不同
一般來說,ldpi是120,mdpi是160,hdpi是240,xhdpi的dip是320,xxhdpi的是480。
xhdpi是Android 2.2才开始增加的分类;xlarge是Android 2.3才开始增加的分类; tvdip 则是最近的事。
drawable-hdpi 对应的解析度为 WVGA (480x800),FWVGA (480x854),是放高解析度的图片
drawable-mdpi 对应的解析度为 HVGA (320x480),是放中等解析度的图片
drawable-ldpi 对应的解析度为 QVGA (240x320),是放低解析度的图片
  Android系统会根据机器的解析度来分辨鉴定对应到相关的资料夹找出对应的图片,什么分辨率就使用对应的drawable下的目录;
2.layout目录相关
  在android中要让手机自适应不同分辨率的手机,总的来说有三种方法:
  1.一种是代码实现布局
  2.一种是多个layout来实现。
  3.最后是使用属性layout_weight来实现自适应多个分辨率,但是确定是如果布局较复杂,实现起来比较难控制,复杂。
---------1.普通情况
  这里是说res目录当然是说的使用多个layout来自适应分辨率:
  其实很简单,只需要在res目录下创建不同的layout文件夹,比如layout-640x360,layout-800x480,所有的layout文件在编译之后都会写入R.java里,而系统会根据屏幕的大小自己选择合适的layout进行使用。
----------2.设计到横屏竖屏时
  屏幕方向:
横屏竖屏自动切换:
&&&& 可以在res目录下建立layout-port-800x600和layout-land两个目录,里面分别放置竖屏和横屏两种布局文件,这样在手机屏幕方向变化的时候系统会自动调用相应的布局文件,避免一种布局文件无法满足两种屏幕显示的问题。
不同分辨率横屏竖屏自动切换:
以800x600为例
可以在res目录下建立layout-port-800x600和layout-land-800x600两个目录
以下步骤是网上流传的,不过我自己之前是通过图形化界面实现这个配置,算是殊途同归,有空我会把图片贴上来。
还要说明一点:每个activity都有这个属性screenOrientation,每个activity都需要设置,可以设置为竖屏(portrait),也可以设置为无重力感应(nosensor)。
要让程序界面保持一个方向,不随手机方向转动而变化的处理办法:
在AndroidManifest.xml里面配置一下就可以了。加入这一行android:screenOrientation=&landscape&。
例如(landscape是横向,portrait是纵向):
& xml version=&1.0& encoding=&utf-8& &
&manifest xmlns:android=&android.com/apk/res/android&
&&&&& package=&com.ray.linkit&
&&&&& android:versionCode=&1&
&&&&& android:versionName=&1.0&&
&&& &application android:icon=&@drawable/icon&android:label=&@string/app_name&&
&&&&&&& &activity android:name=&.Main&
&&&&&&&&&&&&&&&&& android:label=&@string/app_name&
&&&&&&&&&&&&&&&&& android:screenOrientation=&portrait&&
&&&&&&&&&&& &intent-filter&
&&&&&&&&&&&&&&& &action android:name=&android.intent.action.MAIN& /&
&&&&&&&&&&&&&&& &category android:name=&android.intent.category.LAUNCHER& /&
&&&&&&&&&&& &/intent-filter&
&&&&&&& &/activity&
&&&&&&&&&&&&&&& &activity android:name=&.GamePlay&
&&&&&&&&&&&&&&& android:screenOrientation=&portrait&$>$/activity&
&&&&&&&&&&&&&&& &activity android:name=&.OptionView&
&&&&&&&&&&&&&&& android:screenOrientation=&portrait&$>$/activity&
&&& &/application&
&&& &uses-sdk android:minSdkVersion=&3& /&
&/manifest&
另外,android中每次屏幕的切换动会重启Activity,所以应该在Activity销毁前保存当前活动的状态,在Activity再次Create的时候载入配置,那样,进行中的游戏就不会自动重启了!
有的程序适合从竖屏切换到横屏,或者反过来,这个时候怎么办呢?可以在配置Activity的地方进行如下的配置android:screenOrientation=&portrait&。这样就可以保证是竖屏总是竖屏了,或者landscape横向。
而有的程序是适合横竖屏切换的。如何处理呢?首先要在配置Activity的时候进行如下的配置:android:configChanges=&keyboardHidden|orientation&,另外需要重写Activity的
onConfigurationChanged方法。实现方式如下,不需要做太多的内容:
&&&&&&& public void onConfigurationChanged(Configuration newConfig) {
&&&&&&&&&&&&&&& super.onConfigurationChanged(newConfig);
&&&&&&&&&&&&&&& if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
&&&&&&&&&&&&&&&&&&&&&&& // land do nothing is ok
&&&&&&&&&&&&&&& } else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
&&&&&&&&&&&&&&&&&&&&&&& // port do nothing is ok
&&&&&&&&&&&&&&& }
写一个支持多分辨的程序,基于1.6开发的,建立了三个资源文件夹drawable-hdpi
drawable-mdpi drawable-ldpi,里面分别存放72*72 48*48 36*36的icon图标文件。当我在G1(1.5的系统)上测试时,图标应该自适应为48*48才对啊,但实际显示的是36*36。怎么才能让其自适应
48*48的icon图标呢
解决办法 drawable-hdpi drawable-mdpi drawable-ldpi改成drawable-480X320 drawable-800X480的多分辨支持的文件夹
3.values目录相关
----------1.多语言:
  values目录是程序默认的资源文件目录,如果要实现多语言版本的话,我们就要添加要实现语言的对应的资源文件。
  首先我们点击添加Android Xml File按钮,会出现下面的界面:
  输入文件名:string.xml,选中Values单选框,并把下面左列表中的Region添加到左边的列表里面,并在Region输入框里输入cn,如下图
  这时,上面的消息提示:如果用Region的话,需要使用语言项,和Region一样,我们把Language也添加到右面的列表里面,填入zh,如下图
  4.0的是选择Android xml values file,输入名字后,点击next 进行操作,和上面的操作差不多。
  点击Finish按钮,资源文件就会建好了,目录:res\values-zh-rCN(其实上面一大堆操作,就是为生成这个目录)
  默认生成的string.xml的代码:
  & xml version=&1.0& encoding=&utf-8& &
&resources&
&string name=&hello&&Hello World, Test!&/string&
&string name=&app_name&&Test-Multilingual&/string&
&/resources&
  修改刚刚生成的res\values-zh-rCN目录下的string.xml:
  & xml version=&1.0& encoding=&utf-8& &
&resources&
&string name=&app_name&&测试多语言&/string&
&string name=&hello&&你好 多语言测试&/string&
&/resources&
多国语言:在res目录下建立不同名称的values文件来调用不同的语言包
Values文件汇总如下:
中文(中国):values-zh-rCN
中文(台湾):values-zh-rTW
中文(香港):values-zh-rHK
英语(美国):values-en-rUS
英语(英国):values-en-rGB
英文(澳大利亚):values-en-rAU
英文(加拿大):values-en-rCA
英文(爱尔兰):values-en-rIE
英文(印度):values-en-rIN
英文(新西兰):values-en-rNZ
英文(新加坡):values-en-rSG
英文(南非):values-en-rZA
阿拉伯文(埃及):values-ar-rEG
阿拉伯文(以色列):values-ar-rIL
保加利亚文:& values-bg-rBG
加泰罗尼亚文:values-ca-rES
捷克文:values-cs-rCZ
丹麦文:values-da-rDK
德文(奥地利):values-de-rAT
德文(瑞士):values-de-rCH
德文(德国):values-de-rDE
德文(列支敦士登):values-de-rLI
希腊文:values-el-rGR
西班牙文(西班牙):values-es-rES
西班牙文(美国):values-es-rUS
芬兰文(芬兰):values-fi-rFI
法文(比利时):values-fr-rBE
法文(加拿大):values-fr-rCA
法文(瑞士):values-fr-rCH
法文(法国):values-fr-rFR
希伯来文:values-iw-rIL
印地文:values-hi-rIN
克罗里亚文:values-hr-rHR
匈牙利文:values-hu-rHU
印度尼西亚文:values-in-rID
意大利文(瑞士):values-it-rCH
意大利文(意大利):values-it-rIT
日文:values-ja-rJP
韩文:values-ko-rKR
立陶宛文:valueslt-rLT
拉脱维亚文:values-lv-rLV
挪威博克马尔文:values-nb-rNO
荷兰文(比利时):values-nl-BE
荷兰文(荷兰):values-nl-rNL
波兰文:values-pl-rPL
葡萄牙文(巴西):values-pt-rBR
葡萄牙文(葡萄牙):values-pt-rPT
罗马尼亚文:values-ro-rRO
俄文:values-ru-rRU
斯洛伐克文:values-sk-rSK
斯洛文尼亚文:values-sl-rSI
塞尔维亚文:values-sr-rRS
瑞典文:values-sv-rSE
泰文:values-th-rTH
塔加洛语:values-tl-rPH
土耳其文:values--r-rTR
乌克兰文:values-uk-rUA
越南文:values-vi-rVN
----------2.多分辨率:
在不同的分辨率下,Android字体大小怎么自适应分辨率的变化?
  假设需要适应320x240,480x320分辨率。在res目录下新建文件夹values-320x240,&values-480x320。然后在文件夹&values ,values-320x240 和 &values-480x320 下新建xml文件dimens.xml,该xml文件内容如下:
  & xml version=&1.0& encoding=&utf-8& &
&resources&
&dimen name=&btnTextSize&&14dip&/dimen&
&/resources&
  针对不同的分辨率,btnTextSize的值不同。在布局文件中,用下面的方式引用该值:
  &TextView android:layout_width=&fill_parent&
android:layout_height=&wrap_content& android:gravity=&center&
android:id=&@+id/lblSet& style=&@style/btntext& android:textSize=&@dimen/btnTextSize&&
&/TextView&
  通过这种方法,可以方便设置在不同分辨率下,字体的大小了。当然,不仅仅字体大小,宽和高等其他的一些属性,也可以通过类似的方式来设置
  layout中设置图片自适应大小,并且设置最大宽高,当图片的宽高大于设置的最大值时,宽高值为设置的最大值。
  &ImageView android:id=&@+id/image_view&
android:layout_width=&wrap_content&
android:layout_height=&wrap_content&
android:adjustViewBounds=&true&
android:maxWidth=&42dp&
android:maxHeight=&42dp&
android:scaleType=&fitCenter&
android:layout_marginLeft=&3dp&
android:src=&@drawable/icon&
  关键代码:
  android:layout_width=&wrap_content&
&&&&&&& android:layout_height=&wrap_content&
&&&&&&& android:adjustViewBounds=&true&
&&&&&&& android:maxWidth=&42dp&
&&&&&&& android:maxHeight=&42dp&
3.values-v11和values-v14文件夹
values-v11代表在API 11+的设备上,用该目录下的styles.xml代替res/values/styles.xml
values-v14代表在API 14+的设备上,用该目录下的styles.xml代替res/values/styles.xml
其中API 11+代表android 3.0 +
  其中API 14+代表android 4.0 +
  比较新的Android版本中附带了一些应用程序可以利用的主题,并在这些平台上运行时,可能要使用这些主题,同时依然要兼容旧的版本。基于不同的平台版本,通过选择定制主题所使用的资源在不同的父主题之间的切换来达到兼容的目的。
例如,以下是用标准的平台默认的亮度主题声明的一个简化的定制主题,它被放在res/values文件夹下的一个XML文件中(通常是res/values/styles.xml):
&stylename=&LightThemeSelector&parent=&android:Theme.Light&&
当应用程序运行在Android3.0(API级别11)或更高的版本上时,针对这个主题要使用比较新的holographic主题,所以,要在res/values-v11的文件夹下的一个XML文件中放入一个可选的主题声明,把它的父主题设置为holographic主题:
&stylename=&LightThemeSelector&parent=&android:Theme.Holo.Light&&
现在就可以像平常一样使用这个LightThemSelector主题了,如果应用程序运行在Android3.0或更高的版本,就会自动的切换到holographic主题。
在R.styleable.Theme类中可以找到用于主题的标准属性列表。
有关提供可选资源的更多信息,如基于平台版本或其他设备配置的主题和布局,可以查看“Providing Resources”文档。
使用平台样式和主题
Android平台提供了一个大的用于应用程序的样式和主题集合。可以在R.style类中找到所有可用的样式。要使用其中列出的样式,就要用一个前缀来替换在样式名中的所有下划线。如,可以用”@android:style/Theme.NoTitleBar”来替代Theme_NoTitleBar。
但是,R.style类文档没有完整的描述样式,因此查看实际的使用这些样式和主题的源代码会更好的帮助理解提供的每种样式属性。为了更好的引用Android的样式和主题,请看下列源代码:
1.& Android样式(styles.xml)
2.& Android主题(themes.xml)
这两个文件会通过例子帮助你设计,例如,在Android主题的源代码中,能够找到&style name=”Theme.Dialog”&声明。在这个定义中,可以看到所有的Android框架使用的对话框样式属性。
  以上资源都来自于互联网
(本文是我综合网上的资料合成的,所以比较全面)。
  另外请参照我的另一篇文章综合学习:
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&增值电信业务经营许可证湘B2-18430人阅读
使用如下代码时,发现字号不会变大,反而会变小:
size = (int) mText.getTextSize() + 1;
mText.setTextSize(size);
后来发现getTextSize返回值是以像素(px)为单位的,而setTextSize()是以sp为单位的,两者单位不一致才造成这样的结果。
这里可以用setTextSize()的另外一种形式,可以指定单位:
setTextSize(int unit, int size)
PLEX_UNIT_PX : Pixels
PLEX_UNIT_SP : Scaled Pixels
PLEX_UNIT_DIP : Device Independent Pixels
下面这样就正常了:
size = (int) mText.getTextSize() + 1;
mText.PLEX_UNIT_PX, size);
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:440855次
积分:4214
积分:4214
排名:第3589名
原创:38篇
转载:128篇
评论:116条
(2)(6)(5)(6)(2)(2)(3)(4)(1)(5)(1)(6)(1)(4)(1)(1)(3)(5)(2)(4)(2)(2)(2)(1)(1)(8)(3)(4)(6)(8)(10)(5)(20)(30)如果你的应用中大多数TextView的颜色是红色, 或者其他颜色, 你是为每一个TextView都设置一次颜色, 还是有其他更好的办法, 这里教你怎么修改TextView的默认颜色。
当然我们TextView的远吗入手。
通过查看 TextView 源码, 发现如下代码:
public TextView(Context context, AttributeSet attrs) {
this(context, attrs, com.android.internal.R.attr.textViewStyle);
这段代码表示, TextView的默认样式名称是&textViewStyle。 然后在Themes.xml中的Theme下面找到&textViewStyle, 可以发现如下代码
&item name="textViewStyle"&@android:style/Widget.TextView&/item&
而且不同的主题TextViewStyle的值是不一样的。其中:
Theme 下面是&@android:style/Widget.TextV
Theme.Height 下面没有这个值, 不知道为什么;
Theme.Holo 下面是 :@android:style/Widget.Holo.TextView;
Theme.Holo.Light 下面是&@android:style/Widget.Holo.Light.TextView;
接着查看源码TextView, 在509行发现如下代码:
case com.android.internal.R.styleable.TextAppearance_textColor:
textColor = appearance.getColorStateList(attr);
这段代码的功能就是用于获取颜色的。 可以发现是通过com.android.internal.R.styleable.TextAppearance_textColor的值。 然后我们查看style.xml文件, 找到如下代码:
&style name="Widget.TextView"&
&item name="android:textAppearance"&?android:attr/textAppearanceSmall&/item&
Widget.TextView 就是上文找的 Theme下面的TextViewStyle的值。 然后我们看到&android:textAppearance 这个就是TextView源码中提到过的。 自然接下来查看:?android:attr/textAppearanceSmall 在Theme中定义的值的是什么。
&item name="textAppearanceSmall"&@android:style/TextAppearance.Small&/item&
我们看到textAppearanceSmall值是&@android:style/TextAppearance.Small, 然后当然要找到@android:style/TextAppearance.Small
在style.xml中找到:
&style name="TextAppearance.Small"&
&item name="android:textSize"&14sp&/item&
&item name="android:textColor"&?textColorSecondary&/item&
可以看到颜色的定义名称是 ?textColorSecondary, 到这里我们终于找到定义颜色的地方了。 这个各个主题鲜明都有定义,不止一处。
&item name="textColorSecondary"&@android:color/secondary_text_dark&/item&
在Theme中我们终于看到定义TextView的颜色的代码了。 比如把TextView默认颜色改为 #333333, 使用如下代码
&style name="AppTheme" parent="Theme"&
&item name="android:textColorSecondary"&#333333&/item&
阅读(...) 评论()

我要回帖

更多关于 android textview动画 的文章

 

随机推荐