一步一步学android控件(之二) —— TextView

浏览:943 ℃
字体:
发布时间:2013-12-09 23:24:07
来源:
ndroid 控件众多 , 额 , 具体多少个呢? 貌似有那么几十个吧,也没做个统计,嘿嘿!......
 
有木有朋友感觉写了那么长时间的android代码,有时候想写点自己的东西的时候却发现自己好像离不开网络耶,什么都需要先到网络上遨游一番才能解决自己的问题。思前想后,个人觉得还是有必要巩固一下自己学习过的东西——想想以前这些东西,自己都写过一遍了,但是折腾一段时间下来都不知道放哪里去了........
 
 
好了,废话不多说了,这次准备重新学习一下android的常用控件TextView、EditText、AutoCompleteTextView、Button、CalendarView、CheckBox、Chronometer、CompoundButton、DatePicker、DigitalClock、ExpandableListView、Gallery、GridView、HorizontalScrollView、ImageButton、ImageSwitcher、ImageView、ListPopupWindow、ListView、MultiAutoCompleteTextView、NumberPicker、PopupMenu、PopupWindow、ProgressBar、QuickContactBadge、RadioButton、RadioGroup、RatingBar、RemoteViews、ScrollView、SearchView、SeekBar、SlidingDarwer、Switch、TableHost、TextClock、TextSwitcher、TimePicker、Toast、ToggleButton、VideoView、ViewFlipper、ViewSwitcher、ZoomButton等控件。
 
今天学习TextView控件,先来看看效果图(注意:本文中的代码是写在工程SelfDefineWidget中的,具体内容参见一步一步学android控件(之一) —— 开始篇
 
 
该界面中有5个button和一个TextView控件,当点击每个button时将修改TextView中的内容或背景:
 
1、点击button “指定字体大小为24” 将看到字体变大,对应属性 android:textSize.
 
2、点击button “指定字体颜色为蓝色” 字体颜色将从黑色变为男色,对应属性android:textColor.
 
3、点击button “html下划线” ,将在字体的下面画出一条直线。可以在strings.xml文件中用<u>Some thind </u> 替换硬编码。
 
4、点击button “html删除线”,将在TextView中的字体的中间画一条直线。可以在strings.xml文件中用<stroke>Some thind </stroke> 替换硬编码。
 
5、点击button “自定义背景” ,将看到以颜色#e0FFFFCC为底色,#e066CC00为边框色,边框宽度为2的椭圆。
 
其中1,2,3,4的效果比较简单这里就不给出效果图了,下图为点击“自定义背景”后看到的textView的背景:
 
 
从上图可以看到,我们点击了删除线、将字体设置为蓝色,自定义背景的button 。
 
下面一步一步实现上述所述的功能:
 
1、首先,打开一步一步学android控件(之一) —— 开始篇 创建的工程,在res/strings.xml文件中加入如下内容:
 
 
[html]  
<!-- strings for TextView -->  
    <string name="default_text_view_str">这是默认的TextView的样式</string>  
      
    <string name="customer_font_size">指定字体大小为24</string>  
    <string name="font_size_24">这是24号大小的字体哦</string>  
      
    <string name="customer_font_color">指定字体颜色为蓝色</string>  
      
    <string name="html_u">html下划线</string>  
    <string name="html_stroke">html删除线</string>  
      
    <string name="cumtomer_bg_str">自定义背景</string>  
    <!-- end -->  
2、在res/values目录下面创建文件widget_color.xml (该文件用来定义所有的颜色),内容如下:
 
[html]  
<?xml version="1.0" encoding="utf-8"?>  
<resources>  
    <color name="text_view_fill">#e0FFFFCC</color>  
    <color name="text_view_stroke">#e066CC00</color>  
    <color name="color_blue">#0000ff</color>  
</resources>  
3、在drawable(如果不存在,自己新建一个)目录下创建widget_text_view_bg.xml文件(自定义的背景),内容如下
[html] 
<?xml version="1.0" encoding="utf-8"?>  
<shape xmlns:android="http://schemas.android.com/apk/res/android"  
    android:shape="oval" >  
  
    <solid android:color="@color/text_view_fill" />  
  
    <stroke  
        android:width="2dp"  
        android:color="@color/text_view_stroke" />  
  
    <padding  
        android:bottom="10dp"  
        android:left="15dp"  
        android:right="15dp"  
        android:top="10dp" />  
  
</shape>  
可以看到,定义了一个shape(对应ShapeDrawable类),stroke 描边框 , solid 指定填充颜色,padding 指定内容和边框的距离。
 
 
4、创建效果图中的界面text_view_detail.xml 
 
[html]  
<?xml version="1.0" encoding="utf-8"?>  
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    android:gravity="center_horizontal" >  
  
    <LinearLayout  
        android:id="@+id/linearLayout1"  
        android:layout_width="match_parent"  
        android:layout_height="wrap_content"  
        android:layout_alignParentLeft="true"  
        android:layout_alignParentTop="true" >  
  
        <Button  
            android:id="@+id/customer_font_size_btn"  
            style="?android:attr/buttonStyleSmall"  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
            android:text="@string/customer_font_size" />  
  
        <Button  
            android:id="@+id/customer_font_color_btn"  
            style="?android:attr/buttonStyleSmall"  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
            android:text="@string/customer_font_color" />  
    </LinearLayout>  
    <LinearLayout  
        android:id="@+id/linearLayout2"  
        android:layout_width="match_parent"  
        android:layout_height="wrap_content"  
        android:layout_below="@+id/linearLayout1" >  
        <Button  
            android:id="@+id/html_u_btn"  
            style="?android:attr/buttonStyleSmall"  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
            android:text="@string/html_u" />  
  
        <Button  
            android:id="@+id/html_stroke_btn"  
            style="?android:attr/buttonStyleSmall"  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
            android:text="@string/html_stroke" />  
        <Button  
            android:id="@+id/cumtomer_bg_btn"  
            style="?android:attr/buttonStyleSmall"  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
            android:text="@string/cumtomer_bg_str" />  
    </LinearLayout>  
  
    <TextView  
        android:id="@+id/show_text_view_detail"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_alignParentBottom="true"  
        android:layout_marginBottom="100dp"  
        android:layout_marginLeft="16dp"  
        android:singleLine="true"  
        android:text="@string/default_text_view_str" />  
  
</RelativeLayout>  
 
5、创建用于交互的activity —— WidgetTextView.java
 
[java]  
package com.xy.zt.selfdefinewieget;  
  
import android.app.Activity;  
import android.content.res.Resources;  
import android.graphics.Paint;  
import android.os.Bundle;  
import android.text.Html;  
import android.text.TextPaint;  
import android.view.View;  
import android.view.View.OnClickListener;  
import android.widget.Button;  
import android.widget.TextView;  
  
public class WidgetTextView extends Activity implements OnClickListener{  
  
    private static final float FONT_SIZE = 24f;  
    private Button mCusFontSize ;  
    private Button mCusFontColor ;  
    private Button mHtmlU ;  
    private Button mHtmlStroke ;  
    private Button mCusBg ;  
      
    private TextView mShowView ;  
    private Resources mRes;  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.text_view_detail);  
        init();  
    }  
  
    void init(){  
        mRes = getResources();  
        mShowView = (TextView) findViewById(R.id.show_text_view_detail);  
          
        mCusFontSize = (Button) findViewById(R.id.customer_font_size_btn);  
        mCusFontSize.setOnClickListener(this);  
          
        mCusFontColor = (Button) findViewById(R.id.customer_font_color_btn);  
        mCusFontColor.setOnClickListener(this);  
          
        mHtmlU = (Button) findViewById(R.id.html_u_btn);  
        mHtmlU.setOnClickListener(this);  
          
        mHtmlStroke = (Button) findViewById(R.id.html_stroke_btn);  
        mHtmlStroke.setOnClickListener(this);  
          
        mCusBg= (Button) findViewById(R.id.cumtomer_bg_btn);  
        mCusBg.setOnClickListener(this);  
    }  
  
    public void onClick(View v) {  
        String tempStr ;  
        switch(v.getId()){  
        case R.id.customer_font_size_btn:  
            mShowView.setText(R.string.font_size_24);  
            mShowView.setTextSize(FONT_SIZE);  
            break;  
        case R.id.customer_font_color_btn:  
            mShowView.setTextColor(mRes.getColor(R.color.color_blue));  
            break;  
        case R.id.html_u_btn:  
            tempStr = mShowView.getText().toString();  
            mShowView.getPaint().setAntiAlias(true);  
            mShowView.setPaintFlags(Paint.UNDERLINE_TEXT_FLAG);  
            break;  
        case R.id.html_stroke_btn:  
            mShowView.getPaint().setAntiAlias(true);  
            mShowView.setPaintFlags(Paint.STRIKE_THRU_TEXT_FLAG);  
            break;  
        case R.id.cumtomer_bg_btn:  
            mShowView.setBackgroundResource(R.drawable.widget_text_view_bg);  
            break;  
        }  
    }  
}  
 
6、做好这一切后,还需要在一步一步学android控件(之一) —— 开始篇 中WidgetsAdapter类中修改handleItemClicked函数为如下内容:
 
[java]  
Intent intent = new Intent();  
        switch (action) {  
        case ViewData.TEXT_VIEW_ID:  
            intent.setClass(mContext, WidgetTextView.class);  
            mContext.startActivity(intent);  
            break;  
        }  
 
ok,今天就到这里,下一个控件——Button 。
 
闂傚倸鍊搁崐鎼佸磹閹间礁纾归柣鎴eГ閸ゅ嫰鏌涢锝嗙8闁逞屽厸閻掞妇鎹㈠┑瀣妞ゆ挾濯Σ鍗炩攽閻愬瓨缍戦柛姘儏宀e灝鈻庨幋婵愭闂佺鍕垫畷闁抽攱鍨堕妵鍕箳閸℃ぞ澹曠紓鍌欑椤︻垶顢氶鐘插灊濠电姵鑹鹃崘鈧銈嗘尵閸犳捇宕㈤幖浣光拺闁硅偐鍋涢崝妤呮煛閸涱喚顬奸柍顏呮尦濮婄粯鎷呴崨闈涚秺椤㈡牠宕卞☉妯碱唶闂佸綊妫跨粈渚€鎮¢垾鎰佺唵閻犺櫣灏ㄩ崝鐔兼煛閸☆厾鐣甸柡灞剧洴婵$兘濮€閳╁啰褰囬梻浣虹帛缁嬪繘宕曞畷鍥潟闁规崘顕х壕鍏肩箾閸℃ê淇柛鐐茬秺濮婃椽鏌呴悙鑼跺濠⒀屽櫍閺屾盯鎮㈤柨瀣淮濡炪們鍨哄Λ鍐€佸鈧幃鈺咁敃椤厼顥氶梺鑽ゅ枑閻熴儳鈧凹鍘剧划鍫ュ礃椤忓棛锛滈柣鐘叉穿鐏忔瑦鏅堕敂绛嬫闁绘劖褰冮弳锝夋煕閳哄绡€鐎规洏鍔戦、娑橆潩椤掑倸顕辨繝纰夌磿閸嬫垿宕愰弽顓炵闁绘劦鍓氶崣蹇涙煣韫囷絽浜炴い鈺傜叀閺屾洝绠涢弴鐐愭盯鏌¢埀顒佺鐎n偆鍘介梺鐟扮摠缁诲啫顔忓┑瀣厱闁圭儤鏌ㄩ。鑲╃磼缂佹ḿ娲寸€殿喖鐖奸獮瀣攽閹邦亞纾惧┑掳鍊楁慨鐑藉磻濞戞碍宕叉慨妞诲亾鐎殿噮鍋婇獮妯肩磼濡粯顏熼梻浣芥硶閸o箓骞忛敓锟�/QQ 1602007闂傚倸鍊搁崐鎼佸磹閹间礁纾归柣鎴eГ閸婂潡鏌ㄩ弮鍫熸殰闁稿鎸剧划顓炩槈濡娅ч梺娲诲幗閻熲晠寮婚悢鍛婄秶濡わ絽鍟宥夋⒑閹肩偛鈧牠宕濋弽顓炍﹂柛鏇ㄥ灠閸愨偓濡炪倖鍔﹀鈧紒顔肩埣濮婂搫煤鐠囨彃绠哄銈冨妼閻楁捇鐛径宀€鐭欐繛鍡樺劤閹垶绻濋姀锝嗙【闁挎洩绠撳畷銏犆洪鍛嫼闂佸憡绻傜€氼剟寮冲▎鎾寸厽婵°倐鍋撴俊顐g懇瀹曟洟顢曢敂瑙f嫽婵炶揪绲块幊鎾活敋濠婂懐纾奸悹鍥ㄥ絻閳ь剙鐏濋悾鐑藉箛閺夊灝绐涙繝鐢靛Т鐎氬嘲煤閹间焦鈷戦悹鍥b偓宕団偓濠氭煃瑜滈崜鐔奉嚕閵婏妇顩烽悗锝庡亞閸樿棄鈹戦埥鍡楃仴婵炲娲滈懞閬嶅锤濡や胶鍘遍棅顐㈡处閹歌锕㈡导瀛樼厪闁搞儜鍐句純濡ょ姷鍋涘ú顓€€侀弮鍫濆耿婵炲棙鍨甸獮鍡涙⒒閸屾瑧顦﹂柟纰卞亰閹本寰勭仦鎯у簥濠电娀娼уΛ娑㈠汲閿曞倹鐓欓柣鎴灻悘宥夋煕椤愵偂閭鐐寸墪鑿愭い鎺嗗亾闁诲浚浜弻锟犲幢濞嗗繋绮堕梺瀹狀潐閸ㄥ潡骞冨▎蹇e晠妞ゆ柨鍚嬮宥呪攽閻樻剚鍟忛柛鐘愁殜楠炴劙骞庨挊澶岀暫閻熸粍妫冮悰顔嘉熼崗鐓庣彴闂佽偐鈷堥崜娑㈠汲娴煎瓨鈷掑ù锝呮啞閸熺偞绻涚拠褏鐣电€规洖缍婇弻鍡楊吋閸涱垽绱遍梻浣告啞濞诧箓宕归柆宥嗗亗闁挎繂顦遍崣鎾绘煕閵夛絽濡介悘蹇庡嵆閹綊骞囬崜浣虹槇閻庢鍣崑濠傜暦婵傜ǹ唯闁挎棁顫夌€氳棄鈹戦悙瀛樺鞍闁糕晛鍟村畷鎴﹀箻鐎靛摜顔曟繛杈剧到閸熷潡宕ュΟ琛℃婵☆垱绮嶅Λ鍐ㄧ暦椤忓懏濯撮悷娆忓閻濇姊婚崒娆戭槮闁规祴鍓濈粭鐔肺旈崨顓犵崶濠殿喗枪缂堜即鍩€椤掆偓閹虫ê顕f繝姘ㄩ柨鏃€鍎抽獮鎰版⒒娴h鍋犻柛搴櫍瀵彃鈽夐姀鐘插殤闂佸搫鍟悧濠囨偂閸愵喗鐓熼柣鏃偳归ˉ瀣极閸儲鈷戦柛婵嗗鐎氭壆绱掓径搴綈濞e洤锕幃婊堟寠婢光斂鍔戦弻鏇熷緞濞戙垺顎嶉梺浼欒缂嶄線寮婚敐澶嬪亜闁告縿鍎抽悡浣糕攽閻橆喖鐏柨姘舵懚閻愮繝绻嗛柕鍫濇噺閸h櫣绱掗悩鍐叉诞婵﹦绮幏鍛村川闂堟稒璐¢柟骞垮灲楠炴帒螖閳ь剟鎮¢弴銏$厱妞ゆ劧绲挎俊鍥煛鐎n偅顥堥柡宀嬬節瀹曟﹢濡搁妷銏犱壕鐟滅増甯掔粣妤呮煙閹殿喖顣奸柛瀣ㄥ妽閵囧嫰寮介悽闈涘煂闂佸搫顑囬崰鏍箖濡も偓椤繈鎮欓鈧锟�
>更多相关文章
24小时热门资讯
24小时回复排行
闂傚倸鍊搁崐鎼佸磹瀹勬噴褰掑炊椤掑鏅悷婊冪箻閸┾偓妞ゆ帊鑳堕埢鎾绘煛閸涱喚鐭岀紒顕呭弮閹垽鎳栭悜妯活棃闁糕斁鍋撳銈嗗笒閸犳岸寮虫导瀛樷拺閻犲洦褰冮銏ゆ煕閹邦剦鐓兼鐐茬箻閺佹捇鏁撻敓锟� 闂傚倸鍊搁崐鎼佸磹閹间礁纾瑰瀣捣閻棗霉閿濆牊顏犵紒鈧繝鍌楁斀闁绘ɑ褰冮埀顒€顕槐鎾愁潩鏉堛劌鏋戦梺纭呮彧缁犳垶顢婇梻浣筋潐婢瑰棙鏅跺Δ鍛9闁绘垼濮ら悡鐔兼煏韫囧鐏柡鍡忔櫊閺岋綁鏁愰崨顖氱厽濠殿喖锕ュ钘壩涢崘銊㈡婵ǹ浜弶浠嬫⒒娴e懙褰掓晝閵夈儍娲冀椤掑倷缃曞┑鐘殿暯濡插懘宕归悽绋跨;闁归偊鍎靛☉銏╂晬婵炴垶鐗旂花濠氭⒑鐟欏嫬绀冩繛澶嬬⊕缁傛帡鏁冮崒娑氬幈闂佹寧绻傞幊蹇涘箟閸濄儳纾奸弶鍫涘妼濞搭喗銇勯姀锛勬噰闁瑰磭鍋ゆ俊鐑藉Ψ瑜濈槐锕傛⒒閸屾瑧顦﹂柟纰卞亰閹本寰勫畝鈧粈濠傘€掑锝呬壕閻庤娲樺浠嬪极瀹ュ绀嬮柕濞垮劙婢规洟姊洪幐搴g畵濡ょ姴鎲$粋宥呪堪閸曗晙绨婚棅顐㈡储閸庤尙鈧熬鎷�
闂傚倸鍊搁崐鎼佸磹閹间礁纾瑰瀣捣閻棗銆掑锝呬壕濡ょ姷鍋涢ˇ鐢稿垂妤e啫绠涘ù锝呮贡缁嬩礁鈹戦悩鍨毄濠殿喚鏁婚幊婵嬪礈瑜嶉ˉ姘攽閻樺磭顣查柣鎾跺枛閺岋繝宕橀妸銉㈠亾閸濄儲鏆滈柛鎾茶兌绾惧ジ鏌eΟ铏癸紞濠⒀屼邯閺屽秶鎲撮崟顐や紝闂佽鍠掗弲鐘荤嵁閹捐绠抽柟鐐儗閸炴彃鈹戦敍鍕杭闁稿﹥鐗曠叅婵犻潧娲㈡禒鍫ユ煙闂傚顦︾紒鐘靛仱閺屾洘绻涢崹顔煎Ф濠电偟顑曢崝鎴﹀蓟濞戙垹鐒洪柛鎰亾閻h泛顪冮妶搴′航濞存粠浜滈~蹇撁洪鍕炊闂侀潧顦崕娲焵椤掍焦宕岄柡宀€鍠栧畷娆撳Χ閸℃浼� 闂傚倸鍊搁崐鎼佸磹瀹勬噴褰掑炊椤掑鏅悷婊冪箻閸┾偓妞ゆ帊鑳堕埢鎾绘煛閸涱垰孝闁伙絽鍢茶灒闁煎鍊楅惁鍫濃攽椤旀枻渚涢柛妯绘倐楠炴劙宕橀瑙f嫼闂佸憡绋戦敃銉﹀緞閸曨垱鐓曢煫鍥ㄦ⒒閵嗘帡鏌熼獮鍨伈鐎规洖宕埢搴ㄥ箛椤掍胶鈧箖姊绘担鍛婃儓闁稿﹤缍婇、鏍р枎閹惧啿鎯為梺鍝勬储閸ㄦ椽鎮¢悢鍏肩厪闊洦娲栧瓭濡炪們鍎辩换姗€寮婚埄鍐╁闁告縿鍎涢敐澶嬬厵濞撴艾鐏濇俊鍏笺亜椤愶絿鐭掔€规洖宕灃闁逞屽墴閿濈偤顢曢敂瑙f嫼闂佸憡绋戦…鈧柟瀵稿У閺嗘粍淇婇妶鍛殲鐎规洖寮剁换娑㈠箣濞嗗繒浠肩紓浣哄缂嶄線寮婚敐澶婄疀妞ゆ挾鍠撶粙鍥⒒閸屾凹妲哥紒澶婂濡叉劙骞樼€靛摜鎳濋梺鎼炲劀閸曨厺閭紓鍌氬€风粈渚€藝闁秴绠犻柟鐐た閺佸鏌ㄥ┑鍡橆棤缂佲檧鍋撴繝娈垮枟閿曗晠宕㈤崗鑲╊洸婵犲﹤鐗婇埛鎴犵磼鐎n厽纭剁紒鐘冲▕閺屾稑螣閻樻彃鏆婇柡瀣閻擃偊宕堕妸褉濮囬梺鎶芥敱閸ㄥ潡寮诲☉妯锋斀闁糕剝顨忔禒濂告⒑閸濆嫭顥為柣鐔叉櫊瀵鈽夊▎鎴犵槇闂佺ǹ鏈粙鏍兜閳ь剛绱撻崒娆戣窗闁哥姵鐗犻幃褔骞樼拠鍙夌€梺鐟板⒔缁垶寮查幖浣圭叆闁绘洖鍊圭€氾拷
资讯 | QQ | 安全 | 编程 | 数据库 | 系统 | 网络 | 考试 | 站长 | 关于东联 | 安全雇佣 | 搞笑视频大全 | 微信学院 | 视频课程 |
关于我们 | 联系我们 | 广告服务 | 免责申明 | 作品发布 | 网站地图 | 官方微博 | 技术培训
Copyright © 2007 - 2025 Vm888.Com. All Rights Reserved
粤公网安备 44060402001498号 粤ICP备19097316号 请遵循相关法律法规
');})();