Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥

Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥?

杞浇璇锋敞鏄庡嚭澶勶細http://blog.****.net/guolin_blog/article/details/17357967

涓嶇煡涓嶈涓紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView绯诲垪鐨勬枃绔犲凡缁忓啓鍒扮鍥涚瘒浜嗭紝鍥為【涓€涓嬶紝鎴戜滑涓€鍏卞涔犱簡LayoutInflater鐨勫師鐞嗗垎鏋愩€佽鍥剧殑缁樺埗娴佺▼銆佽鍥剧殑鐘舵€佸強閲嶇粯绛夌煡璇嗭紝绠楁槸鎶奦iew涓緢澶氶噸瑕佺殑鐭ヨ瘑鐐归兘娑夊強鍒颁簡銆傚鏋滀綘杩樻病鏈夌湅杩囨垜鍓嶉潰鐨勫嚑绡囨枃绔狅紝寤鸿鍏堝幓闃呰涓€涓嬶紝澶氫簡瑙d竴浜涘師鐞嗘柟闈㈢殑涓滆タ銆?/p>

涔嬪墠鎴戞湁鎵胯杩囷紝浼氬湪View杩欎釜璇濋涓婂鍐欏嚑绡囧崥瀹紝璁蹭竴璁睼iew鐨勫伐浣滃師鐞嗭紝浠ュ強鑷畾涔塚iew鐨勬柟娉曘€傜幇鍦ㄥ墠鍗婇儴鍒嗙殑鎵胯宸茬粡濡傜害鍏戠幇浜嗭紝閭d箞浠婂ぉ鎴戝氨瑕佹潵鍏戠幇鍚庨潰閮ㄥ垎鐨勬壙璇猴紝璁蹭竴璁茶嚜瀹氫箟View鐨勫疄鐜版柟娉曪紝鍚屾椂杩欎篃鏄甫浣犱竴姝ユ娣卞叆浜嗚ВView绯诲垪鐨勫畬缁撶瘒銆?/p>

涓€浜涙帴瑙ndroid涓嶄箙鐨勬湅鍙嬪鑷畾涔塚iew閮芥湁涓€涓濈晱鎯ф劅锛屾€绘劅瑙夎繖鏄竴涓瘮杈冮珮绾х殑鎶€鏈紝浣嗗叾瀹炶嚜瀹氫箟View骞朵笉澶嶆潅锛屾湁鏃跺€欏彧闇€瑕佺畝鍗曞嚑琛屼唬鐮佸氨鍙互瀹屾垚浜嗐€?/p>

濡傛灉璇磋鎸夌被鍨嬫潵鍒掑垎鐨勮瘽锛岃嚜瀹氫箟View鐨勫疄鐜版柟寮忓ぇ姒傚彲浠ュ垎涓轰笁绉嶏紝鑷粯鎺т欢銆佺粍鍚堟帶浠躲€佷互鍙婄户鎵挎帶浠躲€傞偅涔堜笅闈㈡垜浠氨鏉ヤ緷娆″涔犱竴涓嬶紝姣忕鏂瑰紡鍒嗗埆鏄浣曡嚜瀹氫箟View鐨勩€?/p>

涓€銆佽嚜缁樻帶浠?/span>

鑷粯鎺т欢鐨勬剰鎬濆氨鏄紝杩欎釜View涓婃墍灞曠幇鐨勫唴瀹瑰叏閮ㄩ兘鏄垜浠嚜宸辩粯鍒跺嚭鏉ョ殑銆傜粯鍒剁殑浠g爜鏄啓鍦╫nDraw()鏂规硶涓殑锛岃€岃繖閮ㄥ垎鍐呭鎴戜滑宸茬粡鍦?a style="margin: 0px; padding: 0px; color: #0c89cf; font-family: 'Microsoft YaHei'; font-weight: bold; line-height: 30px;" target="_blank" href="http://blog.****.net/guolin_blog/article/details/16330267">Android瑙嗗浘缁樺埗娴佺▼瀹屽叏瑙f瀽锛屽甫浣犱竴姝ユ娣卞叆浜嗚ВView(浜?聽涓涔犺繃浜嗐€?/p>

涓嬮潰鎴戜滑鍑嗗鏉ヨ嚜瀹氫箟涓€涓鏁板櫒View锛岃繖涓猇iew鍙互鍝嶅簲鐢ㄦ埛鐨勭偣鍑讳簨浠讹紝骞惰嚜鍔ㄨ褰曚竴鍏辩偣鍑讳簡澶氬皯娆°€傛柊寤轰竴涓狢ounterView缁ф壙鑷猇iew锛屼唬鐮佸涓嬫墍绀猴細

[java]聽view plain聽copy
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
  1. publicclass聽CounterView聽extends聽View聽implements聽OnClickListener聽{聽聽
  2. 聽聽
  3. 聽聽聽聽private聽Paint聽mPaint;聽聽
  4. 聽聽聽聽聽聽
  5. 聽聽聽聽private聽Rect聽mBounds;聽聽
  6. 聽聽
  7. 聽聽聽聽privateint聽mCount;聽聽
  8. 聽聽聽聽聽聽
  9. 聽聽聽聽public聽CounterView(Context聽context,聽AttributeSet聽attrs)聽{聽聽
  10. 聽聽聽聽聽聽聽聽super(context,聽attrs);聽聽
  11. 聽聽聽聽聽聽聽聽mPaint聽=聽new聽Paint(Paint.ANTI_ALIAS_FLAG);聽聽
  12. 聽聽聽聽聽聽聽聽mBounds聽=聽new聽Rect();聽聽
  13. 聽聽聽聽聽聽聽聽setOnClickListener(this);聽聽
  14. 聽聽聽聽}聽聽
  15. 聽聽
  16. 聽聽聽聽@Override聽聽
  17. 聽聽聽聽protectedvoid聽onDraw(Canvas聽canvas)聽{聽聽
  18. 聽聽聽聽聽聽聽聽super.onDraw(canvas);聽聽
  19. 聽聽聽聽聽聽聽聽mPaint.setColor(Color.BLUE);聽聽
  20. 聽聽聽聽聽聽聽聽canvas.drawRect(0,聽0,聽getWidth(),聽getHeight(),聽mPaint);聽聽
  21. 聽聽聽聽聽聽聽聽mPaint.setColor(Color.YELLOW);聽聽
  22. 聽聽聽聽聽聽聽聽mPaint.setTextSize(30);聽聽
  23. 聽聽聽聽聽聽聽聽String聽text聽=聽String.valueOf(mCount);聽聽
  24. 聽聽聽聽聽聽聽聽mPaint.getTextBounds(text,聽0,聽text.length(),聽mBounds);聽聽
  25. 聽聽聽聽聽聽聽聽float聽textWidth聽=聽mBounds.width();聽聽
  26. 聽聽聽聽聽聽聽聽float聽textHeight聽=聽mBounds.height();聽聽
  27. 聽聽聽聽聽聽聽聽canvas.drawText(text,聽getWidth()聽/聽2聽-聽textWidth聽/聽2,聽getHeight()聽/聽2聽聽
  28. 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽+聽textHeight聽/聽2,聽mPaint);聽聽
  29. 聽聽聽聽}聽聽
  30. 聽聽
  31. 聽聽聽聽@Override聽聽
  32. 聽聽聽聽publicvoid聽onClick(View聽v)聽{聽聽
  33. 聽聽聽聽聽聽聽聽mCount++;聽聽
  34. 聽聽聽聽聽聽聽聽invalidate();聽聽
  35. 聽聽聽聽}聽聽
  36. 聽聽
  37. }聽聽

鍙互鐪嬪埌锛岄鍏堟垜浠湪CounterView鐨勬瀯閫犲嚱鏁颁腑鍒濆鍖栦簡涓€浜涙暟鎹紝骞剁粰杩欎釜View鐨勬湰韬敞鍐屼簡鐐瑰嚮浜嬩欢锛岃繖鏍峰綋CounterView琚偣鍑荤殑鏃跺€欙紝onClick()鏂规硶灏变細寰楀埌璋冪敤銆傝€宱nClick()鏂规硶涓殑閫昏緫灏辨洿鍔犵畝鍗曚簡锛屽彧鏄mCount杩欎釜璁℃暟鍣ㄥ姞1锛岀劧鍚庤皟鐢╥nvalidate()鏂规硶銆傞€氳繃Android瑙嗗浘鐘舵€佸強閲嶇粯娴佺▼鍒嗘瀽锛屽甫浣犱竴姝ユ娣卞叆浜嗚ВView(涓?聽杩欑瘒鏂囩珷鐨勫涔犳垜浠兘宸茬粡鐭ラ亾锛岃皟鐢╥nvalidate()鏂规硶浼氬鑷磋鍥捐繘琛岄噸缁橈紝鍥犳onDraw()鏂规硶鍦ㄧ◢鍚庡氨灏嗕細寰楀埌璋冪敤銆?/span>

鏃㈢劧CounterView鏄竴涓嚜缁樿鍥撅紝閭d箞鏈€涓昏鐨勯€昏緫褰撶劧灏辨槸鍐欏湪onDraw()鏂规硶閲岀殑浜嗭紝涓嬮潰鎴戜滑灏辨潵浠旂粏鐪嬩竴涓嬨€傝繖閲岄鍏堟槸灏哖aint鐢荤瑪璁剧疆涓鸿摑鑹诧紝鐒跺悗璋冪敤Canvas鐨刣rawRect()鏂规硶缁樺埗浜嗕竴涓煩褰紝杩欎釜鐭╁舰涔熷氨鍙互褰撲綔鏄疌ounterView鐨勮儗鏅浘鍚с€傛帴鐫€灏嗙敾绗旇缃负榛勮壊锛屽噯澶囧湪鑳屾櫙涓婇潰缁樺埗褰撳墠鐨勮鏁帮紝娉ㄦ剰杩欓噷鍏堟槸璋冪敤浜唃etTextBounds()鏂规硶鏉ヨ幏鍙栧埌鏂囧瓧鐨勫搴﹀拰楂樺害锛岀劧鍚庤皟鐢ㄤ簡drawText()鏂规硶鍘昏繘琛岀粯鍒跺氨鍙互浜嗐€?/p>

杩欐牱锛屼竴涓嚜瀹氫箟鐨刅iew灏卞凡缁忓畬鎴愪簡锛屽苟涓旂洰鍓嶈繖涓狢ounterView鏄叿澶囪嚜鍔ㄨ鏁板姛鑳界殑銆傞偅涔堝墿涓嬬殑闂灏辨槸濡備綍璁╄繖涓猇iew鍦ㄧ晫闈笂鏄剧ず鍑烘潵浜嗭紝鍏跺疄杩欎篃闈炲父绠€鍗曪紝鎴戜滑鍙渶瑕佸儚浣跨敤鏅€氱殑鎺т欢涓€鏍锋潵浣跨敤CounterView灏卞彲浠ヤ簡銆傛瘮濡傚湪甯冨眬鏂囦欢涓姞鍏ュ涓嬩唬鐮侊細

[html]聽view plain聽copy
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
  1. <RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"聽聽
  2. 聽聽聽聽android:layout_width="match_parent"聽聽
  3. 聽聽聽聽android:layout_height="match_parent">聽聽
  4. 聽聽
  5. 聽聽聽聽<com.example.customview.CounterView聽聽
  6. 聽聽聽聽聽聽聽聽android:layout_width="100dp"聽聽
  7. 聽聽聽聽聽聽聽聽android:layout_height="100dp"聽聽
  8. 聽聽聽聽聽聽聽聽android:layout_centerInParent="true"/>聽聽
  9. 聽聽
  10. </RelativeLayout>聽聽

鍙互鐪嬪埌锛岃繖閲屾垜浠皢CounterView鏀惧叆浜嗕竴涓猂elativeLayout涓紝鐒跺悗鍙互鍍忎娇鐢ㄦ櫘閫氭帶浠舵潵缁機ounterView鎸囧畾鍚勭灞炴€э紝姣斿閫氳繃layout_width鍜宭ayout_height鏉ユ寚瀹欳ounterView鐨勫楂橈紝閫氳繃android:layout_centerInParent鏉ユ寚瀹氬畠鍦ㄥ竷灞€閲屽眳涓樉绀恒€傚彧涓嶈繃闇€瑕佹敞鎰忥紝鑷畾涔夌殑View鍦ㄤ娇鐢ㄧ殑鏃跺€欎竴瀹氳鍐欏嚭瀹屾暣鐨勫寘鍚嶏紝涓嶇劧绯荤粺灏嗘棤娉曟壘鍒拌繖涓猇iew銆?/span>

濂戒簡锛屽氨鏄繖涔堢畝鍗曪紝鎺ヤ笅鏉ユ垜浠彲浠ヨ繍琛屼竴涓嬬▼搴忥紝骞朵笉鍋滃湴鐐瑰嚮CounterView锛屾晥鏋滃涓嬪浘鎵€绀恒€?/p>

Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥

鎬庝箞鏍凤紵鏄笉鏄劅瑙夎嚜瀹氫箟View涔熷苟涓嶆槸浠€涔堥珮绾х殑鎶€鏈紝绠€鍗曞嚑琛屼唬鐮佸氨鍙互瀹炵幇浜嗐€傚綋鐒朵簡锛岃繖涓狢ounterView鍔熻兘闈炲父绠€闄嬶紝鍙湁涓€涓鏁板姛鑳斤紝鍥犳鍙渶鍑犺浠g爜灏辫冻澶熶簡锛屽綋浣犻渶瑕佺粯鍒舵瘮杈冨鏉傜殑View鏃讹紝杩樻槸闇€瑕佸緢澶氭妧宸х殑銆?/p>

浜屻€佺粍鍚堟帶浠?/strong>

缁勫悎鎺т欢鐨勬剰鎬濆氨鏄紝鎴戜滑骞朵笉闇€瑕佽嚜宸卞幓缁樺埗瑙嗗浘涓婃樉绀虹殑鍐呭锛岃€屽彧鏄敤绯荤粺鍘熺敓鐨勬帶浠跺氨濂戒簡锛屼絾鎴戜滑鍙互灏嗗嚑涓郴缁熷師鐢熺殑鎺т欢缁勫悎鍒颁竴璧凤紝杩欐牱鍒涘缓鍑虹殑鎺т欢灏辫绉颁负缁勫悎鎺т欢銆?/p>

涓句釜渚嬪瓙鏉ヨ锛屾爣棰樻爮灏辨槸涓緢甯歌鐨勭粍鍚堟帶浠讹紝寰堝鐣岄潰鐨勫ご閮ㄩ兘浼氭斁缃竴涓爣棰樻爮锛屾爣棰樻爮涓婁細鏈変釜杩斿洖鎸夐挳鍜屾爣棰橈紝鐐瑰嚮鎸夐挳鍚庡氨鍙互杩斿洖鍒颁笂涓€涓晫闈€傞偅涔堜笅闈㈡垜浠氨鏉ュ皾璇曞幓瀹炵幇杩欐牱涓€涓爣棰樻爮鎺т欢銆?/p>

鏂板缓涓€涓猼itle.xml甯冨眬鏂囦欢锛屼唬鐮佸涓嬫墍绀猴細

[html]聽view plain聽copy
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
  1. <?xmlversion="1.0"encoding="utf-8"?>聽聽
  2. <RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"聽聽
  3. 聽聽聽聽android:layout_width="match_parent"聽聽
  4. 聽聽聽聽android:layout_height="50dp"聽聽
  5. 聽聽聽聽android:background="#ffcb05">聽聽
  6. 聽聽
  7. 聽聽聽聽<Button聽聽
  8. 聽聽聽聽聽聽聽聽android:id="@+id/button_left"聽聽
  9. 聽聽聽聽聽聽聽聽android:layout_width="60dp"聽聽
  10. 聽聽聽聽聽聽聽聽android:layout_height="40dp"聽聽
  11. 聽聽聽聽聽聽聽聽android:layout_centerVertical="true"聽聽
  12. 聽聽聽聽聽聽聽聽android:layout_marginLeft="5dp"聽聽
  13. 聽聽聽聽聽聽聽聽android:background="@drawable/back_button"聽聽
  14. 聽聽聽聽聽聽聽聽android:text="Back"聽聽
  15. 聽聽聽聽聽聽聽聽android:textColor="#fff"/>聽聽
  16. 聽聽
  17. 聽聽聽聽<TextView聽聽
  18. 聽聽聽聽聽聽聽聽android:id="@+id/title_text"聽聽
  19. 聽聽聽聽聽聽聽聽android:layout_width="wrap_content"聽聽
  20. 聽聽聽聽聽聽聽聽android:layout_height="wrap_content"聽聽
  21. 聽聽聽聽聽聽聽聽android:layout_centerInParent="true"聽聽
  22. 聽聽聽聽聽聽聽聽android:text="This聽is聽Title"聽聽
  23. 聽聽聽聽聽聽聽聽android:textColor="#fff"聽聽
  24. 聽聽聽聽聽聽聽聽android:textSize="20sp"/>聽聽
  25. 聽聽
  26. </RelativeLayout>聽聽

鍦ㄨ繖涓竷灞€鏂囦欢涓紝鎴戜滑棣栧厛瀹氫箟浜嗕竴涓猂elativeLayout浣滀负鑳屾櫙甯冨眬锛岀劧鍚庡湪杩欎釜甯冨眬閲屽畾涔変簡涓€涓狟utton鍜屼竴涓猅extView锛孊utton灏辨槸鏍囬鏍忎腑鐨勮繑鍥炴寜閽紝TextView灏辨槸鏍囬鏍忎腑鐨勬樉绀虹殑鏂囧瓧銆?/p>

鎺ヤ笅鏉ュ垱寤轰竴涓猅itleView缁ф壙鑷狥rameLayout锛屼唬鐮佸涓嬫墍绀猴細

[java]聽view plain聽copy
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
  1. publicclass聽TitleView聽extends聽FrameLayout聽{聽聽
  2. 聽聽
  3. 聽聽聽聽private聽Button聽leftButton;聽聽
  4. 聽聽
  5. 聽聽聽聽private聽TextView聽titleText;聽聽
  6. 聽聽
  7. 聽聽聽聽public聽TitleView(Context聽context,聽AttributeSet聽attrs)聽{聽聽
  8. 聽聽聽聽聽聽聽聽super(context,聽attrs);聽聽
  9. 聽聽聽聽聽聽聽聽LayoutInflater.from(context).inflate(R.layout.title,聽this);聽聽
  10. 聽聽聽聽聽聽聽聽titleText聽=聽(TextView)聽findViewById(R.id.title_text);聽聽
  11. 聽聽聽聽聽聽聽聽leftButton聽=聽(Button)聽findViewById(R.id.button_left);聽聽
  12. 聽聽聽聽聽聽聽聽leftButton.setOnClickListener(new聽OnClickListener()聽{聽聽
  13. 聽聽聽聽聽聽聽聽聽聽聽聽@Override聽聽
  14. 聽聽聽聽聽聽聽聽聽聽聽聽publicvoid聽onClick(View聽v)聽{聽聽
  15. 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽((Activity)聽getContext()).finish();聽聽
  16. 聽聽聽聽聽聽聽聽聽聽聽聽}聽聽
  17. 聽聽聽聽聽聽聽聽});聽聽
  18. 聽聽聽聽}聽聽
  19. 聽聽
  20. 聽聽聽聽publicvoid聽setTitleText(String聽text)聽{聽聽
  21. 聽聽聽聽聽聽聽聽titleText.setText(text);聽聽
  22. 聽聽聽聽}聽聽
  23. 聽聽
  24. 聽聽聽聽publicvoid聽setLeftButtonText(String聽text)聽{聽聽
  25. 聽聽聽聽聽聽聽聽leftButton.setText(text);聽聽
  26. 聽聽聽聽}聽聽
  27. 聽聽
  28. 聽聽聽聽publicvoid聽setLeftButtonListener(OnClickListener聽l)聽{聽聽
  29. 聽聽聽聽聽聽聽聽leftButton.setOnClickListener(l);聽聽
  30. 聽聽聽聽}聽聽
  31. 聽聽
  32. }聽聽

TitleView涓殑浠g爜闈炲父绠€鍗曪紝鍦═itleView鐨勬瀯寤烘柟娉曚腑锛屾垜浠皟鐢ㄤ簡LayoutInflater鐨刬nflate()鏂规硶鏉ュ姞杞藉垰鍒氬畾涔夌殑title.xml甯冨眬锛岃繖閮ㄥ垎鍐呭鎴戜滑宸茬粡鍦?/span>Android LayoutInflater鍘熺悊鍒嗘瀽锛屽甫浣犱竴姝ユ娣卞叆浜嗚ВView(涓€)聽杩欑瘒鏂囩珷涓涔犺繃浜嗐€?/span>

鎺ヤ笅鏉ヨ皟鐢╢indViewById()鏂规硶鑾峰彇鍒颁簡杩斿洖鎸夐挳鐨勫疄渚嬶紝鐒跺悗鍦ㄥ畠鐨刼nClick浜嬩欢涓皟鐢╢inish()鏂规硶鏉ュ叧闂綋鍓嶇殑Activity锛屼篃灏辩浉褰撲簬瀹炵幇杩斿洖鍔熻兘浜嗐€?/p>

鍙﹀锛屼负浜嗚TitleView鏈夋洿寮哄湴鎵╁睍鎬э紝鎴戜滑杩樻彁渚涗簡setTitleText()銆乻etLeftButtonText()銆乻etLeftButtonListener()绛夋柟娉曪紝鍒嗗埆鐢ㄤ簬璁剧疆鏍囬鏍忎笂鐨勬枃瀛椼€佽繑鍥炴寜閽笂鐨勬枃瀛椼€佷互鍙婅繑鍥炴寜閽殑鐐瑰嚮浜嬩欢銆?/p>

鍒颁簡杩欓噷锛屼竴涓嚜瀹氫箟鐨勬爣棰樻爮灏卞畬鎴愪簡锛岄偅涔堜笅闈㈠張鍒颁簡濡備綍寮曠敤杩欎釜鑷畾涔塚iew鐨勯儴鍒嗭紝鍏跺疄鏂规硶鍩烘湰閮芥槸鐩稿悓鐨勶紝鍦ㄥ竷灞€鏂囦欢涓坊鍔犲涓嬩唬鐮侊細

[html]聽view plain聽copy
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
  1. <RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"聽聽
  2. 聽聽聽聽xmlns:tools="http://schemas.android.com/tools"聽聽
  3. 聽聽聽聽android:layout_width="match_parent"聽聽
  4. 聽聽聽聽android:layout_height="match_parent">聽聽
  5. 聽聽
  6. 聽聽聽聽<com.example.customview.TitleView聽聽
  7. 聽聽聽聽聽聽聽聽android:id="@+id/title_view"聽聽
  8. 聽聽聽聽聽聽聽聽android:layout_width="match_parent"聽聽
  9. 聽聽聽聽聽聽聽聽android:layout_height="wrap_content">聽聽
  10. 聽聽聽聽</com.example.customview.TitleView>聽聽
  11. 聽聽
  12. </RelativeLayout>聽聽

杩欐牱灏辨垚鍔熷皢涓€涓爣棰樻爮鎺т欢寮曞叆鍒板竷灞€鏂囦欢涓簡锛岃繍琛屼竴涓嬬▼搴忥紝鏁堟灉濡備笅鍥炬墍绀猴細

Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥

鐜板湪鐐瑰嚮涓€涓婤ack鎸夐挳锛屽氨鍙互鍏抽棴褰撳墠鐨凙ctivity浜嗐€傚鏋滀綘鎯宠淇敼鏍囬鏍忎笂鏄剧ず鐨勫唴瀹癸紝鎴栬€呰繑鍥炴寜閽殑榛樿浜嬩欢锛屽彧闇€瑕佸湪Activity涓€氳繃findViewById()鏂规硶寰楀埌TitleView鐨勫疄渚嬶紝鐒跺悗璋冪敤setTitleText()銆乻etLeftButtonText()銆乻etLeftButtonListener()绛夋柟娉曡繘琛岃缃氨OK浜嗐€?/p>

涓夈€佺户鎵挎帶浠?/span>

缁ф壙鎺т欢鐨勬剰鎬濆氨鏄紝鎴戜滑骞朵笉闇€瑕佽嚜宸遍噸澶村幓瀹炵幇涓€涓帶浠讹紝鍙渶瑕佸幓缁ф壙涓€涓幇鏈夌殑鎺т欢锛岀劧鍚庡湪杩欎釜鎺т欢涓婂鍔犱竴浜涙柊鐨勫姛鑳斤紝灏卞彲浠ュ舰鎴愪竴涓嚜瀹氫箟鐨勬帶浠朵簡銆傝繖绉嶈嚜瀹氫箟鎺т欢鐨勭壒鐐瑰氨鏄笉浠呰兘澶熸寜鐓ф垜浠殑闇€姹傚姞鍏ョ浉搴旂殑鍔熻兘锛岃繕鍙互淇濈暀鍘熺敓鎺т欢鐨勬墍鏈夊姛鑳斤紝姣斿聽Android PowerImageView瀹炵幇锛屽彲浠ユ挱鏀惧姩鐢荤殑寮哄ぇImageView聽杩欑瘒鏂囩珷涓粙缁嶇殑PowerImageView灏辨槸涓€涓吀鍨嬬殑缁ф壙鎺т欢銆?/p>

涓轰簡鑳藉鍔犳繁澶у瀵硅繖绉嶈嚜瀹氫箟View鏂瑰紡鐨勭悊瑙o紝涓嬮潰鎴戜滑鍐嶆潵缂栧啓涓€涓柊鐨勭户鎵挎帶浠躲€侺istView鐩镐俊姣忎竴涓狝ndroid绋嬪簭鍛橀兘涓€瀹氫娇鐢ㄨ繃锛岃繖娆℃垜浠噯澶囧ListView杩涜鎵╁睍锛屽姞鍏ュ湪ListView涓婃粦鍔ㄥ氨鍙互鏄剧ず鍑轰竴涓垹闄ゆ寜閽紝鐐瑰嚮鎸夐挳灏变細鍒犻櫎鐩稿簲鏁版嵁鐨勫姛鑳姐€?/p>

棣栧厛闇€瑕佸噯澶囦竴涓垹闄ゆ寜閽殑甯冨眬锛屾柊寤篸elete_button.xml鏂囦欢锛屼唬鐮佸涓嬫墍绀猴細

[html]聽view plain聽copy
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
  1. <?xmlversion="1.0"encoding="utf-8"?>聽聽
  2. <Buttonxmlns:android="http://schemas.android.com/apk/res/android"聽聽
  3. 聽聽聽聽android:id="@+id/delete_button"聽聽
  4. 聽聽聽聽android:layout_width="wrap_content"聽聽
  5. 聽聽聽聽android:layout_height="wrap_content"聽聽
  6. 聽聽聽聽android:background="@drawable/delete_button">聽聽
  7. 聽聽
  8. </Button>聽聽

杩欎釜甯冨眬鏂囦欢寰堢畝鍗曪紝鍙湁涓€涓寜閽€屽凡锛屽苟涓旀垜浠粰杩欎釜鎸夐挳鎸囧畾浜嗕竴寮犲垹闄よ儗鏅浘銆?/span>

鎺ョ潃鍒涘缓MyListView缁ф壙鑷狶istView锛岃繖灏辨槸鎴戜滑鑷畾涔夌殑View浜嗭紝浠g爜濡備笅鎵€绀猴細

[java]聽view plain聽copy
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
  1. publicclass聽MyListView聽extends聽ListView聽implements聽OnTouchListener,聽聽
  2. 聽聽聽聽聽聽聽聽OnGestureListener聽{聽聽
  3. 聽聽
  4. 聽聽聽聽private聽GestureDetector聽gestureDetector;聽聽
  5. 聽聽
  6. 聽聽聽聽private聽OnDeleteListener聽listener;聽聽
  7. 聽聽
  8. 聽聽聽聽private聽View聽deleteButton;聽聽
  9. 聽聽
  10. 聽聽聽聽private聽ViewGroup聽itemLayout;聽聽
  11. 聽聽
  12. 聽聽聽聽privateint聽selectedItem;聽聽
  13. 聽聽
  14. 聽聽聽聽privateboolean聽isDeleteShown;聽聽
  15. 聽聽
  16. 聽聽聽聽public聽MyListView(Context聽context,聽AttributeSet聽attrs)聽{聽聽
  17. 聽聽聽聽聽聽聽聽super(context,聽attrs);聽聽
  18. 聽聽聽聽聽聽聽聽gestureDetector聽=聽new聽GestureDetector(getContext(),聽this);聽聽
  19. 聽聽聽聽聽聽聽聽setOnTouchListener(this);聽聽
  20. 聽聽聽聽}聽聽
  21. 聽聽
  22. 聽聽聽聽publicvoid聽setOnDeleteListener(OnDeleteListener聽l)聽{聽聽
  23. 聽聽聽聽聽聽聽聽listener聽=聽l;聽聽
  24. 聽聽聽聽}聽聽
  25. 聽聽
  26. 聽聽聽聽@Override聽聽
  27. 聽聽聽聽publicboolean聽onTouch(View聽v,聽MotionEvent聽event)聽{聽聽
  28. 聽聽聽聽聽聽聽聽if聽(isDeleteShown)聽{聽聽
  29. 聽聽聽聽聽聽聽聽聽聽聽聽itemLayout.removeView(deleteButton);聽聽
  30. 聽聽聽聽聽聽聽聽聽聽聽聽deleteButton聽=聽null;聽聽
  31. 聽聽聽聽聽聽聽聽聽聽聽聽isDeleteShown聽=聽false;聽聽
  32. 聽聽聽聽聽聽聽聽聽聽聽聽returnfalse;聽聽
  33. 聽聽聽聽聽聽聽聽}聽else聽{聽聽
  34. 聽聽聽聽聽聽聽聽聽聽聽聽return聽gestureDetector.onTouchEvent(event);聽聽
  35. 聽聽聽聽聽聽聽聽}聽聽
  36. 聽聽聽聽}聽聽
  37. 聽聽
  38. 聽聽聽聽@Override聽聽
  39. 聽聽聽聽publicboolean聽onDown(MotionEvent聽e)聽{聽聽
  40. 聽聽聽聽聽聽聽聽if聽(!isDeleteShown)聽{聽聽
  41. 聽聽聽聽聽聽聽聽聽聽聽聽selectedItem聽=聽pointToPosition((int)聽e.getX(),聽(int)聽e.getY());聽聽
  42. 聽聽聽聽聽聽聽聽}聽聽
  43. 聽聽聽聽聽聽聽聽returnfalse;聽聽
  44. 聽聽聽聽}聽聽
  45. 聽聽
  46. 聽聽聽聽@Override聽聽
  47. 聽聽聽聽publicboolean聽onFling(MotionEvent聽e1,聽MotionEvent聽e2,聽float聽velocityX,聽聽
  48. 聽聽聽聽聽聽聽聽聽聽聽聽float聽velocityY)聽{聽聽
  49. 聽聽聽聽聽聽聽聽if聽(!isDeleteShown聽&&聽Math.abs(velocityX)聽>聽Math.abs(velocityY))聽{聽聽
  50. 聽聽聽聽聽聽聽聽聽聽聽聽deleteButton聽=聽LayoutInflater.from(getContext()).inflate(聽聽
  51. 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽R.layout.delete_button,聽null);聽聽
  52. 聽聽聽聽聽聽聽聽聽聽聽聽deleteButton.setOnClickListener(new聽OnClickListener()聽{聽聽
  53. 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽@Override聽聽
  54. 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽publicvoid聽onClick(View聽v)聽{聽聽
  55. 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽itemLayout.removeView(deleteButton);聽聽
  56. 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽deleteButton聽=聽null;聽聽
  57. 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽isDeleteShown聽=聽false;聽聽
  58. 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽listener.onDelete(selectedItem);聽聽
  59. 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}聽聽
  60. 聽聽聽聽聽聽聽聽聽聽聽聽});聽聽
  61. 聽聽聽聽聽聽聽聽聽聽聽聽itemLayout聽=聽(ViewGroup)聽getChildAt(selectedItem聽聽
  62. 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽-聽getFirstVisiblePosition());聽聽
  63. 聽聽聽聽聽聽聽聽聽聽聽聽RelativeLayout.LayoutParams聽params聽=聽new聽RelativeLayout.LayoutParams(聽聽
  64. 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽LayoutParams.WRAP_CONTENT,聽LayoutParams.WRAP_CONTENT);聽聽
  65. 聽聽聽聽聽聽聽聽聽聽聽聽params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);聽聽
  66. 聽聽聽聽聽聽聽聽聽聽聽聽params.addRule(RelativeLayout.CENTER_VERTICAL);聽聽
  67. 聽聽聽聽聽聽聽聽聽聽聽聽itemLayout.addView(deleteButton,聽params);聽聽
  68. 聽聽聽聽聽聽聽聽聽聽聽聽isDeleteShown聽=聽true;聽聽
  69. 聽聽聽聽聽聽聽聽}聽聽
  70. 聽聽聽聽聽聽聽聽returnfalse;聽聽
  71. 聽聽聽聽}聽聽
  72. 聽聽
  73. 聽聽聽聽@Override聽聽
  74. 聽聽聽聽publicboolean聽onSingleTapUp(MotionEvent聽e)聽{聽聽
  75. 聽聽聽聽聽聽聽聽returnfalse;聽聽
  76. 聽聽聽聽}聽聽
  77. 聽聽
  78. 聽聽聽聽@Override聽聽
  79. 聽聽聽聽publicvoid聽onShowPress(MotionEvent聽e)聽{聽聽
  80. 聽聽
  81. 聽聽聽聽}聽聽
  82. 聽聽
  83. 聽聽聽聽@Override聽聽
  84. 聽聽聽聽publicboolean聽onScroll(MotionEvent聽e1,聽MotionEvent聽e2,聽float聽distanceX,聽聽
  85. 聽聽聽聽聽聽聽聽聽聽聽聽float聽distanceY)聽{聽聽
  86. 聽聽聽聽聽聽聽聽returnfalse;聽聽
  87. 聽聽聽聽}聽聽
  88. 聽聽
  89. 聽聽聽聽@Override聽聽
  90. 聽聽聽聽publicvoid聽onLongPress(MotionEvent聽e)聽{聽聽
  91. 聽聽聽聽}聽聽
  92. 聽聽聽聽聽聽
  93. 聽聽聽聽publicinterface聽OnDeleteListener聽{聽聽
  94. 聽聽
  95. 聽聽聽聽聽聽聽聽void聽onDelete(int聽index);聽聽
  96. 聽聽
  97. 聽聽聽聽}聽聽
  98. 聽聽
  99. }聽聽

鐢变簬浠g爜閫昏緫姣旇緝绠€鍗曪紝鎴戝氨娌℃湁鍔犳敞閲娿€傝繖閲屽湪MyListView鐨勬瀯閫犳柟娉曚腑鍒涘缓浜嗕竴涓狦estureDetector鐨勫疄渚嬬敤浜庣洃鍚墜鍔匡紝鐒跺悗缁橫yListView娉ㄥ唽浜唗ouch鐩戝惉浜嬩欢銆傜劧鍚庡湪onTouch()鏂规硶涓繘琛屽垽鏂紝濡傛灉鍒犻櫎鎸夐挳宸茬粡鏄剧ず浜嗭紝灏卞皢瀹冪Щ闄ゆ帀锛屽鏋滃垹闄ゆ寜閽病鏈夋樉绀猴紝灏变娇鐢℅estureDetector鏉ュ鐞嗗綋鍓嶆墜鍔裤€?/span>

褰撴墜鎸囨寜涓嬫椂锛屼細璋冪敤OnGestureListener鐨刼nDown()鏂规硶锛屽湪杩欓噷閫氳繃pointToPosition()鏂规硶鏉ュ垽鏂嚭褰撳墠閫変腑鐨勬槸ListView鐨勫摢涓€琛屻€傚綋鎵嬫寚蹇€熸粦鍔ㄦ椂锛屼細璋冪敤onFling()鏂规硶锛屽湪杩欓噷浼氬幓鍔犺浇delete_button.xml杩欎釜甯冨眬锛岀劧鍚庡皢鍒犻櫎鎸夐挳娣诲姞鍒板綋鍓嶉€変腑鐨勯偅涓€琛宨tem涓娿€傛敞鎰忥紝鎴戜滑杩樼粰鍒犻櫎鎸夐挳娣诲姞浜嗕竴涓偣鍑讳簨浠讹紝褰撶偣鍑讳簡鍒犻櫎鎸夐挳鏃跺氨浼氬洖璋僶nDeleteListener鐨刼nDelete()鏂规硶锛屽湪鍥炶皟鏂规硶涓簲璇ュ幓澶勭悊鍏蜂綋鐨勫垹闄ゆ搷浣溿€?/p>

濂戒簡锛岃嚜瀹氫箟View鐨勫姛鑳藉埌姝ゅ氨瀹屾垚浜嗭紝鎺ヤ笅鏉ユ垜浠渶瑕佺湅涓€涓嬪浣曟墠鑳戒娇鐢ㄨ繖涓嚜瀹氫箟View銆傞鍏堥渶瑕佸垱寤轰竴涓狶istView瀛愰」鐨勫竷灞€鏂囦欢锛屾柊寤簃y_list_view_item.xml锛屼唬鐮佸涓嬫墍绀猴細

[html]聽view plain聽copy
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
  1. <?xmlversion="1.0"encoding="utf-8"?>聽聽
  2. <RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"聽聽
  3. 聽聽聽聽android:layout_width="match_parent"聽聽
  4. 聽聽聽聽android:layout_height="match_parent"聽聽
  5. 聽聽聽聽android:descendantFocusability="blocksDescendants"聽聽
  6. 聽聽聽聽android:orientation="vertical">聽聽
  7. 聽聽
  8. 聽聽聽聽<TextView聽聽
  9. 聽聽聽聽聽聽聽聽android:id="@+id/text_view"聽聽
  10. 聽聽聽聽聽聽聽聽android:layout_width="wrap_content"聽聽
  11. 聽聽聽聽聽聽聽聽android:layout_height="50dp"聽聽
  12. 聽聽聽聽聽聽聽聽android:layout_centerVertical="true"聽聽
  13. 聽聽聽聽聽聽聽聽android:gravity="left|center_vertical"聽聽
  14. 聽聽聽聽聽聽聽聽android:textColor="#000"/>聽聽
  15. 聽聽
  16. </RelativeLayout>聽聽

鐒跺悗鍒涘缓涓€涓€傞厤鍣∕yAdapter锛屽湪杩欎釜閫傞厤鍣ㄤ腑鍘诲姞杞絤y_list_view_item甯冨眬锛屼唬鐮佸涓嬫墍绀猴細

[java]聽view plain聽copy
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
  1. publicclass聽MyAdapter聽extends聽ArrayAdapter<String>聽{聽聽
  2. 聽聽
  3. 聽聽聽聽public聽MyAdapter(Context聽context,聽int聽textViewResourceId,聽List<String>聽objects)聽{聽聽
  4. 聽聽聽聽聽聽聽聽super(context,聽textViewResourceId,聽objects);聽聽
  5. 聽聽聽聽}聽聽
  6. 聽聽
  7. 聽聽聽聽@Override聽聽
  8. 聽聽聽聽public聽View聽getView(int聽position,聽View聽convertView,聽ViewGroup聽parent)聽{聽聽
  9. 聽聽聽聽聽聽聽聽View聽view;聽聽
  10. 聽聽聽聽聽聽聽聽if聽(convertView聽==聽null)聽{聽聽
  11. 聽聽聽聽聽聽聽聽聽聽聽聽view聽=聽LayoutInflater.from(getContext()).inflate(R.layout.my_list_view_item,聽null);聽聽
  12. 聽聽聽聽聽聽聽聽}聽else聽{聽聽
  13. 聽聽聽聽聽聽聽聽聽聽聽聽view聽=聽convertView;聽聽
  14. 聽聽聽聽聽聽聽聽}聽聽
  15. 聽聽聽聽聽聽聽聽TextView聽textView聽=聽(TextView)聽view.findViewById(R.id.text_view);聽聽
  16. 聽聽聽聽聽聽聽聽textView.setText(getItem(position));聽聽
  17. 聽聽聽聽聽聽聽聽return聽view;聽聽
  18. 聽聽聽聽}聽聽
  19. 聽聽
  20. }聽聽

鍒拌繖閲屽氨鍩烘湰宸茬粡瀹屽伐浜嗭紝涓嬮潰鍦ㄧ▼搴忕殑涓诲竷灞€鏂囦欢閲岄潰寮曞叆MyListView杩欎釜鎺т欢锛屽涓嬫墍绀猴細

[html]聽view plain聽copy
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
  1. <RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"聽聽
  2. 聽聽聽聽xmlns:tools="http://schemas.android.com/tools"聽聽
  3. 聽聽聽聽android:layout_width="match_parent"聽聽
  4. 聽聽聽聽android:layout_height="match_parent">聽聽
  5. 聽聽
  6. 聽聽聽聽<com.example.customview.MyListView聽聽
  7. 聽聽聽聽聽聽聽聽android:id="@+id/my_list_view"聽聽
  8. 聽聽聽聽聽聽聽聽android:layout_width="match_parent"聽聽
  9. 聽聽聽聽聽聽聽聽android:layout_height="wrap_content">聽聽
  10. 聽聽聽聽</com.example.customview.MyListView>聽聽
  11. 聽聽
  12. </RelativeLayout>聽聽

鏈€鍚庡湪Activity涓垵濮嬪寲MyListView涓殑鏁版嵁锛屽苟澶勭悊浜唎nDelete()鏂规硶鐨勫垹闄ら€昏緫锛屼唬鐮佸涓嬫墍绀猴細

[java]聽view plain聽copy
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
  1. publicclass聽MainActivity聽extends聽Activity聽{聽聽
  2. 聽聽
  3. 聽聽聽聽private聽MyListView聽myListView;聽聽
  4. 聽聽
  5. 聽聽聽聽private聽MyAdapter聽adapter;聽聽
  6. 聽聽
  7. 聽聽聽聽private聽List<String>聽contentList聽=聽new聽ArrayList<String>();聽聽
  8. 聽聽
  9. 聽聽聽聽@Override聽聽
  10. 聽聽聽聽protectedvoid聽onCreate(Bundle聽savedInstanceState)聽{聽聽
  11. 聽聽聽聽聽聽聽聽super.onCreate(savedInstanceState);聽聽
  12. 聽聽聽聽聽聽聽聽requestWindowFeature(Window.FEATURE_NO_TITLE);聽聽
  13. 聽聽聽聽聽聽聽聽setContentView(R.layout.activity_main);聽聽
  14. 聽聽聽聽聽聽聽聽initList();聽聽
  15. 聽聽聽聽聽聽聽聽myListView聽=聽(MyListView)聽findViewById(R.id.my_list_view);聽聽
  16. 聽聽聽聽聽聽聽聽myListView.setOnDeleteListener(new聽OnDeleteListener()聽{聽聽
  17. 聽聽聽聽聽聽聽聽聽聽聽聽@Override聽聽
  18. 聽聽聽聽聽聽聽聽聽聽聽聽publicvoid聽onDelete(int聽index)聽{聽聽
  19. 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽contentList.remove(index);聽聽
  20. 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽adapter.notifyDataSetChanged();聽聽
  21. 聽聽聽聽聽聽聽聽聽聽聽聽}聽聽
  22. 聽聽聽聽聽聽聽聽});聽聽
  23. 聽聽聽聽聽聽聽聽adapter聽=聽new聽MyAdapter(this,聽0,聽contentList);聽聽
  24. 聽聽聽聽聽聽聽聽myListView.setAdapter(adapter);聽聽
  25. 聽聽聽聽}聽聽
  26. 聽聽
  27. 聽聽聽聽privatevoid聽initList()聽{聽聽
  28. 聽聽聽聽聽聽聽聽contentList.add("Content聽Item聽1");聽聽
  29. 聽聽聽聽聽聽聽聽contentList.add("Content聽Item聽2");聽聽
  30. 聽聽聽聽聽聽聽聽contentList.add("Content聽Item聽3");聽聽
  31. 聽聽聽聽聽聽聽聽contentList.add("Content聽Item聽4");聽聽
  32. 聽聽聽聽聽聽聽聽contentList.add("Content聽Item聽5");聽聽
  33. 聽聽聽聽聽聽聽聽contentList.add("Content聽Item聽6");聽聽
  34. 聽聽聽聽聽聽聽聽contentList.add("Content聽Item聽7");聽聽
  35. 聽聽聽聽聽聽聽聽contentList.add("Content聽Item聽8");聽聽
  36. 聽聽聽聽聽聽聽聽contentList.add("Content聽Item聽9");聽聽
  37. 聽聽聽聽聽聽聽聽contentList.add("Content聽Item聽10");聽聽
  38. 聽聽聽聽聽聽聽聽contentList.add("Content聽Item聽11");聽聽
  39. 聽聽聽聽聽聽聽聽contentList.add("Content聽Item聽12");聽聽
  40. 聽聽聽聽聽聽聽聽contentList.add("Content聽Item聽13");聽聽
  41. 聽聽聽聽聽聽聽聽contentList.add("Content聽Item聽14");聽聽
  42. 聽聽聽聽聽聽聽聽contentList.add("Content聽Item聽15");聽聽
  43. 聽聽聽聽聽聽聽聽contentList.add("Content聽Item聽16");聽聽
  44. 聽聽聽聽聽聽聽聽contentList.add("Content聽Item聽17");聽聽
  45. 聽聽聽聽聽聽聽聽contentList.add("Content聽Item聽18");聽聽
  46. 聽聽聽聽聽聽聽聽contentList.add("Content聽Item聽19");聽聽
  47. 聽聽聽聽聽聽聽聽contentList.add("Content聽Item聽20");聽聽
  48. 聽聽聽聽}聽聽
  49. 聽聽
  50. }聽聽

杩欐牱灏辨妸鏁翠釜渚嬪瓙鐨勪唬鐮侀兘瀹屾垚浜嗭紝鐜板湪杩愯涓€涓嬬▼搴忥紝浼氱湅鍒癕yListView鍙互鍍廘istView涓€鏍凤紝姝e父鏄剧ず鎵€鏈夌殑鏁版嵁锛屼絾鏄綋浣犵敤鎵嬫寚鍦∕yListView鐨勬煇涓€琛屼笂蹇€熸粦鍔ㄦ椂锛屽氨浼氭湁涓€涓垹闄ゆ寜閽樉绀哄嚭鏉ワ紝濡備笅鍥炬墍绀猴細

Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
鐐瑰嚮涓€涓嬪垹闄ゆ寜閽氨鍙互灏嗙6琛岀殑鏁版嵁鍒犻櫎浜嗐€傛鏃剁殑MyListView涓嶄粎淇濈暀浜哃istView鍘熺敓鐨勬墍鏈夊姛鑳斤紝杩樺鍔犱簡涓€涓粦鍔ㄨ繘琛屽垹闄ょ殑鍔熻兘锛岀‘瀹炴槸涓€涓笉鎶樹笉鎵g殑缁ф壙鎺т欢銆?/div>
鍒颁簡杩欓噷锛屾垜浠氨鎶婅嚜瀹氫箟View鐨勫嚑绉嶅疄鐜版柟娉曞叏閮ㄨ瀹屼簡锛岃櫧鐒舵瘡涓緥瀛愰兘寰堢畝鍗曪紝浣嗘槸涓囧彉涓嶇鍏跺畻锛屽鏉傜殑View涔熸槸鐢辫繖浜涚畝鍗曠殑鍘熺悊鍫嗙Н鍑烘潵鐨勩€傜粡杩囦簡鍥涚瘒鏂囩珷鐨勫涔狅紝鐩镐俊姣忎釜浜哄View鐨勭悊瑙i兘宸茬粡杈冧负娣卞叆浜嗭紝閭d箞甯︿綘涓€姝ユ娣卞叆浜嗚ВView绯诲垪鐨勬枃绔犲氨鍒版缁撴潫锛屾劅璋㈠ぇ瀹舵湁鑰愬績鐪嬪埌鏈€鍚庛€?/div>

文章评论

相关解决方案
  • 暂无相关解决方案
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
程序员的样子
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
我跳槽是因为他们的显示器更大
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
看13位CEO、创始人和高管如何提高工作效率
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
5款最佳正则表达式编辑调试器
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
团队中“技术大拿”并非越多越好
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
Web开发者需具备的8个好习惯
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
为什么程序员都是夜猫子
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
十大编程算法助程序员走上高手之路
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
那些性感的让人尖叫的程序员
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
代码女神横空出世
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
Java程序员必看电影
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
程序员的鄙视链
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
旅行,写作,编程
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
程序员周末都喜欢做什么?
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
10个调试和排错的小建议
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
Web开发人员为什么越来越懒了?
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
如何成为一名黑客
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
科技史上最臭名昭著的13大罪犯
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
我的丈夫是个程序员
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
程序员必看的十大电影
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
如何区分一个程序员是“老手“还是“新手“?
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
我是如何打败拖延症的
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
程序猿的崛起——Growth Hacker
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
2013年中国软件开发者薪资调查报告
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
初级 vs 高级开发者 哪个性价比更高?
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
60个开发者不容错过的免费资源库
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
程序员应该关注的一些事儿
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
亲爱的项目经理,我恨你
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
写给自己也写给你 自己到底该何去何从
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
聊聊HTTPS和SSL/TLS协议
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
程序员最害怕的5件事 你中招了吗?
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
老美怎么看待阿里赴美上市
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
不懂技术不要对懂技术的人说这很容易实现
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
为啥Android手机总会越用越慢?
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
老程序员的下场
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
10个帮程序员减压放松的网站
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
总结2014中国互联网十大段子
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
“懒”出效率是程序员的美德
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
Java 与 .NET 的平台发展之争
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
程序员和编码员之间的区别
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
2013年美国开发者薪资调查报告
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
当下全球最炙手可热的八位少年创业者
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
程序员都该阅读的书
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
一个程序员的时间管理
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
编程语言是女人
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
做程序猿的老婆应该注意的一些事情
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
那些争议最大的编程观点
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
要嫁就嫁程序猿—钱多话少死的早
Android鑷畾涔塚iew鐨勫疄鐜版柟娉曪紝甯︿綘涓€姝ユ娣卞叆浜嗚ВView(鍥
中美印日四国程序员比较