緇樼敾浠庡竷灞鐨勬牴鑺傜偣寮濮嬨傚畠琚姹傛潵嫻嬮噺鍜岀粯鍒跺竷灞鏍戙傜粯鐢婚氳繃閬嶅巻甯冨眬鏍戝茍娓叉煋姣忎釜鍜屽け鏁堝尯鍩熺浉浜ょ殑瑙嗗浘鏉ュ鐞嗐傜浉搴旂殑錛?strong style="margin: 0px; padding: 0px; ">姣忎釜瑙嗗浘緇勮礋璐h姹傜粯鍒跺畠鐨勫瓙瑙嗗浘錛堥氳繃draw() 鏂規硶錛夎屾瘡涓鍥捐礋璐g敾瀹冭嚜宸?/strong>銆?strong style="margin: 0px; padding: 0px; ">鍥犱負榪欎釜鏍戞槸欏哄簭閬嶅巻鐨勶紝榪欐剰鍛崇潃鍏堢敾鐖惰妭鐐癸紙涔熷氨鏄湪灞忓箷鍚庨潰錛夛紝鐒跺悗鎸夌収鏍戜腑鍑虹幇鐨勯『搴忕敾鍏跺悓灞傛鑺傜偣銆?/strong>
妗嗘灦灝嗕笉浼氱敾涓嶅湪澶辨晥鍖哄煙鐨勮鍥撅紝鑰屼笖榪樺皢浼氬府浣犵敾瑙嗗浘鑳屾櫙銆?/p>
浣犲彲浠ュ己鍒朵竴涓鍥捐閲嶇敾錛岄氳繃璋冪敤invalidate()銆?/strong>
緇樼敾甯冨眬鍏辨湁涓ゆ錛氫竴涓害閲忚繃紼嬪拰涓涓竷灞榪囩▼銆?搴﹂噺榪囩▼鍦╩easure(int, int)閲屽疄鐜頒笖鏄竴涓嚜欏跺悜涓嬬殑瑙嗗浘鏍戦亶鍘嗐傛瘡涓鍥懼湪閫掑綊鏃跺線涓嬫帹閫佸昂瀵歌鏍箋傚湪搴﹂噺榪囩▼鐨勬渶鍚庯紝姣忎釜瑙嗗浘閮藉凡緇忎繚瀛樹簡鑷繁鐨勫害閲忋傜浜屼釜榪囩▼鍙戠敓鍦?layout(int, int, int, int) 涓茍涓斾篃鏄嚜欏跺悜涓嬨傚湪榪欎釜榪囩▼涓紝姣忎釜鐖惰妭鐐硅礋璐e畾浣嶅畠鐨勬墍鏈夊瓙鑺傜偣錛岄氳繃浣跨敤鍦ㄥ害閲忚繃紼嬩腑璁$畻寰楀埌鐨勫昂瀵搞?/p>
褰撲竴涓鍥劇殑 measure()鏂規硶榪斿洖鏃訛紝瀹冪殑getMeasuredWidth()鍜実etMeasuredHeight() 鍊煎繀欏昏璁劇疆錛屼互鍙婃墍鏈夎繖涓鍥懼瓙鑺傜偣鐨勫箋備竴涓鍥劇殑搴﹂噺鐨勫搴﹀拰楂樺害鍊煎繀欏葷鍚堢埗瑙嗗浘寮曞叆鐨勯檺鍒躲傝繖紜繚鍦ㄥ害閲忚繃紼嬩箣鍚庯紝鎵鏈夌埗鑺傜偣鎺ュ彈鎵鏈夊畠浠殑瀛?鑺傜偣鐨勫害閲忓箋備竴涓埗瑙嗗浘鍙兘浼氬湪鍏跺瓙瑙嗗浘涓婂嬈¤皟鐢╩easure()鏂規硶銆傛瘮濡傦紝鐖惰鍥懼彲鑳戒細閫氳繃鏈寚瀹氱殑灝哄璋冪敤measure鏉ュ彂鐜板畠浠殑澶у皬錛?鐒跺悗浣跨敤瀹為檯鏁板煎啀嬈¤皟鐢╩easure()錛屽鏋滄墍鏈夊瓙瑙嗗浘鏈仛闄愬埗鐨勫昂瀵告誨悎榪囧ぇ鎴栬繃灝忥紙涔熷嵆鏄紝濡傛灉瀛愯鍥句箣闂翠笉鑳藉鍚勮嚜鍗犳嵁鐨勭┖闂磋揪鎴愬叡璇嗙殑璇濓紝 鐖惰鍥懼皢浼氬共棰勫茍璁劇疆絎簩涓繃紼嬬殑瑙勫垯錛夈?/p>
瑕佸紑濮嬩竴涓竷灞錛屽彲璋冪敤requestLayout()銆傝繖涓柟娉曢氬父鍦ㄨ鍥捐涓哄畠鑷繁涓嶅啀閫傚悎瀹冨綋鍓嶇殑杈圭晫鐨勬儏鍐典笅琚皟鐢ㄣ?/strong>
搴﹂噺榪囩▼浣跨敤涓や釜綾繪潵浜ゆ祦灝哄銆?strong style="margin: 0px; padding: 0px; ">View.MeasureSpec綾昏瑙嗗浘鐢ㄦ潵鍛婅瘔瀹冧滑鐨勭埗瑙嗗浘瀹冧滑鎯沖浣曡搴﹂噺鍜屽畾浣嶃傚熀紜鐨凩ayoutParams綾諱粎浠呮弿榪頒簡瑙嗗浘鎯蟲湁澶氬ぇ錛堥珮鍜屽錛?/strong>銆傚浜庢瘡涓淮搴︼紝瀹冨彲浠ユ寚瀹氫笅闈箣涓錛?/p>
瀵逛簬涓嶅悓鐨刅iewGroup瀛愮被錛屾湁鐩稿簲鐨凩ayoutParams瀛愮被銆傛瘮濡傦紝鐩稿甯冨眬RelativeLayout鏈夊畠鑷繁鐨凩ayoutParams瀛愮被錛岃繖鍖呭惈浜嗚兘澶熻瀛愯鍥炬í鍚戝拰绔栧悜灞呬腑鏄劇ず鐨勮兘鍔涖?/p>
搴﹂噺瑙勬牸錛圡easureSpecs錛?/strong>琚敤鏉ユ部鐫鏍戜粠鐖跺埌瀛愮殑涓嬩紶搴﹂噺闇姹傘備竴涓狹easureSpecs鍙互鏄笅闈笁縐嶆ā寮忎箣涓錛?/p> 涓銆?/span>涔?璦卞緢澶氱闉嬪皪getWidth()鍜実etMeasuredWidth()鐨勭敤娉曟湁寰堝鐨勪笉瑙o紝閫欏叐鑰呬箣闁撴湁浠楹兼ǎ鐨勪笉鍚屽憿錛岀恫涓婁篃鏈夊悇紼笉鍚岀殑鐗堟湰錛屼絾 澶у鏁擱兘澶у悓灝忕暟錛屽緸閫欏嬪湴鏂笴trl+C,鍒板彟涓鍊嬪湴鏂笴trl+V,娌掓湁鎶婂晱欏岃閫忥紝涔熸湁涓閮ㄥ垎鏂囩珷瑾ゅ皫浜嗗ぇ瀹跺皪閫欏叐鍊嬫柟娉曠殑瑾嶈瓨錛屾垜涔熸槸娣卞彈鍏跺銆?閫欒!鍏堢塵姝d笅闈㈢殑涓鍊嬬増鏈殑瑾硶錛孊aidu涓婁竴鎼滀竴澶у爢鐨勶紝鍙儨閫欑ó瑾硶鏄尟鐨勶紝鎵浠ュ笇鏈涘ぇ瀹跺氨涓嶈鍐嶇洸鐩殑杞夎級鍒頒綘鐨勭┖闁撹!錛?/span> 浜屻?/span>濂戒簡錛岄尟瑾ょ殑鐗堟湰灝變笉閬庡瑾簡錛屼笅闈㈠皪閫欏叐鍊嬫柟娉曞仛涓涓嬫瑙o紝棣栧厛澶у鎳夊厛鐭ラ亾浠ヤ笅騫鵑粸錛?/span> /** Called when the activity is first created. */ mBackgroundLayout = new MyLayout(this); mTextViewTest = new TextViewTest(this); mBackgroundLayout.addView(mTextViewTest); public MyLayout(Context context) { @Override } /** Called when the activity is first created. */ public class TextViewTest extends TextView { @Override --------------------------------------------------------------------2011/03 /01鏇存柊------------------------------------------------------------ 1. 鍦▁ml瑁¢潰鐢ㄧ殑Layout_weight鏄粈楹兼剰鎬濓紵 A: 瑭插爆鎬т唬琛ㄧ殑嬈婂鹼紝嬈婂艱秺灝忥紝绱氬垾瓚婇珮錛屽嵆鍦ㄤ綀灞涓綌鐨勫垎閲忓氨瓚婇噸錛岃垑渚嬨?/span> <?xml version="1.0" encoding="utf-8"?> 鍥犵偤璦疆浜哹utton1鐨勬瑠閲嶆渶灝忥紝鎵浠ュ畠浣旂敤鐨勪綀灞灝辮秺澶э紝閫欐ǎ璦疆鐨勬剰鎬濇槸錛氬皣姍悜鐨勪綀灞鍒嗙偤涓変喚錛宐utton1浣斿叐浠斤紝button2浣斾竴浠斤紝寰堢啊鍠殑錛屾湁浠楹間笉鎳傜殑鍙互鐣欒█錛岃瑵瓔濓紒錛?/span> 涓嬮潰鐪嬫晥鏋滃湒錛?/span> *******2011-3-26 淇敼 榪欓噷瑕侀鍏堟劅璋?/span>sunwayforever鐨勬寚瀵鹼紝閬垮厤浜嗘垜榪欑瘒鏂囩珷閿欒涔嬪鐨勮繘涓姝ユ墿鏁o紝鍦ㄨ繖閲屽厛寮曠敤涓鍙ヨ瘽鍚э細鐢變簬浣滆呮按騫蟲湁闄愶紝鏂囩珷涓毦鍏嶆湁鐤忔紡鍜岄敊璇箣澶勶紝鎭寵澶у鎵硅瘎鎸囨銆傝阿璋紒錛?/span>娉細涓婇潰綞犺壊搴曠磱鐨勮█璜栭尟瑾わ紝甯屾湜澶у寰涓嬬湅錛?/span> linearLayout涓寘鍚湁weight鐨刢hild鏃訛紝linearLayout浼歮easure涓ゆ錛?/span> 閭f垜鐜板湪瀵硅繖鍙ヨ瘽閲嶆柊姒傛嫭涓涓嬶細“鍥犱負璁劇疆浜哹utton1鐨勬潈閲嶆渶灝忥紝鎵浠ュ畠鍗犵敤鐨勫竷灞浼樺厛綰у氨瓚婇珮”錛屼篃璁稿湪Android閲岄潰甯冨眬騫舵病鏈変紭鍏堢駭涔嬭錛屾垜榪欓噷鍙槸涓轟簡璇存槑闂錛岃嚜宸卞畾涔夌殑錛屾墍浠ユ湅鍙嬩滑涓嶈鎷嶇爾銆?/span> 鎺ヨ憲鏄暥layout_weight璦疆鐐簑rap_content鐨勬檪鍊欙紝鍗抽仼鎳夊収瀹圭殑瀵害錛屾剰鎬濇槸閫欏嬫帶浠惰鐩″彲鑳界殑灝忥紝鍙鑳芥妸鍏у欏ず鍑轟締灝卞彲浠?浜嗭紝鍚屾ǎ鐨勶紝濡傛灉鎶奲utton1鍜宐utton2鐨刲ayout_weight璦疆鐐簑rap_content寰岋紝button1鐨剋eight鐐?1錛宐utton2鐨剋eight鐐?.閭i杭button1瑕佸劒鍏堢洝鍙兘鐨勫皬錛岃宐utton2涔熻鐩″彲鑳界殑灝忥紝鍙槸鍎厛绱氫笉涓妯o紝鍥犵偤璦疆浜?weight錛屾墍浠ラ欏叐鍊嬫帶浠剁附鐨勫搴﹁濉豢鐖朵綀灞鐨勫搴︼紝鎵浠ュ氨鍙堣璦堢畻姣忓嬫帶浠舵墍浣旀摎鐨勫ぇ灝忥紝姝ゆ檪錛宐utton1鐨勫劒鍏堢礆杓冮珮錛屽叡鏈夊叐浠斤紝涓浠?1/3錛屼竴浠?/3錛宐utton1瑕佺洝鍙兘鐨勫皬錛岄偅button1鐣剁劧瑕侀伕1/3錛屽洜姝わ紝鎴戝戠湅鍒扮殑鏁堟灉鍙嶈屾槸button2浣旀摎鐨勮純澶с傞欒!瑕佽鐨勬槸 濡傛灉鎶婃瑠鍊煎悓妯e仛濡備笅璦疆錛歜utton1鐐?錛宐utton2鐐?000錛岄偅button1鏄笉鏄氨瑕佷綌鎿?/2000鐨勭┖闁撳憿錛熼欓杭鐞嗚В灝遍尟浜嗭紝鍓涙墠 瑾簡錛?/span>瑕佺洝鍙兘鐨勫皬錛屼絾閫欏嬪皬鏄湁 涓鍊嬮檺搴︾殑錛岄偅灝辨槸wrap_content錛屽氨鏄倓瑕佹槸鍏у瀹屽畬鏁存暣鐨勯’紺哄嚭渚嗭紝鍚屾ǎ鐨勶紝鐩″彲鑳界殑澶т篃鏄湁涓鍊嬮檺搴︾殑錛岄偅灝辨槸鐖朵綀灞鐨勫搴︺傚洜姝わ紝鍦?layout_width璦疆鐐簑rap_content鐨勬檪鍊欙紝weight鎵浠h〃鐨勬槸浣犵殑鎺т歡瑕佸劒鍏堢洝鍙兘鐨勫ぇ銆?/span> 鎵浠ワ紝瑕佸皪weight鍋氫簡瑙o紝瑕佹繁娣辯殑鐞嗚В涓嬮潰鍏╁彞瑭憋細 layout_height 鍚?layout_width. 涓嬮潰璨煎咕寮靛湒錛?/span> 1. layout_width="fill_parent", button1鐨剋eight=1,button2鐨剋eight=2; 2.layout_width="fill_parent", button1鐨剋eight=1,button2鐨剋eight=2000; 3.layout_width="wrap_content", button1鐨剋eight=1,button2鐨剋eight=2; 4.layout_width="wrap_content", button1鐨剋eight=1,button2鐨剋eight=2000;
getWidth寰楀埌鏄煇涓獀iew鐨勫疄闄呭昂瀵?
getMeasuredWidth鏄緱鍒版煇view鎯寵鍦╬arent view閲岄潰鍗犵殑澶у皬.
鎯沖繀浣犱篃瑕嬮亷閫欐ǎ鐨勮В閲嬶紝鑱借搗渚嗛欐ǎ鐨勮В閲嬩篃浼奸洸瑁¢湩瑁★紝娌掓湁鎶婂晱欏岄粸閫忋?/span>
1. 鍦ㄤ竴鍊嬮鍒濆鍖栨檪錛屽嵆鍦ㄦ閫犲嚱鏁哥暥涓垜鍊戞槸寰椾笉鍒癡iew鐨勫闅涘ぇ灝忕殑銆傛劅鑸堣叮鐨勬湅鍙嬪彲浠ヨ│涓涓嬶紝getWidth()鍜実etMeasuredWidth()寰楀埌鐨勭祼鏋滈兘鏄?.浣嗘槸鎴戝戝彲浠ュ緸onDraw()鏂規硶瑁¢潰寰楀埌鎺т歡鐨勫ぇ灝忋?/span>
2. 閫欏叐鍊嬫柟娉曟墍寰楀埌鐨勭祼鏋滅殑鍠綅鏄儚绱犲嵆pixel.
灝嶅叐鍊嬫柟娉曞仛浠嬬垂錛?/span>
getWidth():寰楀埌鐨勬槸view鍦ㄧ埗Layout涓綀灞濂藉緦鐨勫搴﹀鹼紝濡傛灉娌掓湁鐖朵綀灞錛岄偅楹奸粯瑾嶇殑鐖朵綀灞鏄暣鍊嬪睆騫曘備篃璦變笉濂界悊瑙c傞氶亷涓鍊嬩緥瀛愪締瑾槑涓涓嬨?/span>
渚? 錛?/span>
public class Test extends Activity {
private LinearLayout mBackgroundLayout;
private TextViewTest mTextViewTest;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mBackgroundLayout.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.FILL_PARENT));
setContentView(mBackgroundLayout);
}
public class MyLayout extends LinearLayout{
super(context);
// TODO Auto-generated constructor stub
}
protected void onLayout(boolean changed, int l, int t, int r, int b) {
// TODO Auto-generated method stub
super.onLayout(changed, l, t, r, b);
Log.i("Tag", "--------------");
View mView=getChildAt(0);
mView.measure(0, 0);
}
}
public class TextViewTest extends TextView {
public TextViewTest(Context context) {
super(context);
// TODO Auto-generated constructor stub
setText("test test ");
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
// measure(0, 0);
Log.i("Tag", "width: " + getWidth() + ",height: " + getHeight());
Log.i("Tag", "MeasuredWidth: " + getMeasuredWidth()
+ ",MeasuredHeight: " + getMeasuredHeight());
}
}
閫欒!鏄湪LinearLayout瑁℃坊鍔犱竴鍊婽extView鎺т歡錛屽鏋滄鏅傝寰楀埌灝峊extView鐛插彇getWidth()錛岄偅楹兼槸鍦═extView娣誨姞鍒癓ayout寰屽啀鍘葷嵅鍙栧鹼紝涓︿笉鍠柈鐨勬槸灝峊extView鏈韓瀵害鐨勭嵅鍙栥?/span>
getMeasuredWidth()錛?/span>鍏堢湅涓涓婣PI瑁¢潰鎬庨杭瑾殑
The width of this view as measured in the most recent call to measure(). This should be used during measurement and layout calculations only.
寰楀埌鐨勬槸鍦ㄦ渶榪戜竴嬈¤鐢╩easure()鏂規硶娓噺寰屽緱鍒扮殑view鐨勫搴︼紝瀹冨儏鍍呯敤鍦ㄦ脯閲忓拰layout鐨勮▓綆椾腑銆?/span>
鎵浠ユ鏂規硶寰楀埌鐨勬槸view鐨勫収瀹逛綌鎿氱殑瀵﹂殯瀵害銆?/span>
浣犲鏋滄兂寰炰竴鍊嬫渶綈″柈鐨勪緥瀛愪腑鐨勫埌瀹冨戠殑涓嶅悓錛屼笅闈㈠皣灝嶄笂闈㈢殑渚嬪瓙鍋氫竴涓嬩慨鏀癸細
public class Test extends Activity {
private TextViewTest mTextViewTest;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mTextViewTest = new TextViewTest(this);
setContentView(mTextViewTest);
}
public TextViewTest(Context context) {
super(context);
// TODO Auto-generated constructor stub
setText("test test ");
}
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
measure(0, 0);
Log.i("Tag", "width: " + getWidth() + ",height: " + getHeight());
Log.i("Tag", "MeasuredWidth: " + getMeasuredWidth()
+ ",MeasuredHeight: " + getMeasuredHeight());
}
}
}
綹界祼錛堟瑙o級錛?/span>
getWidth(): View鍦ㄨō瀹氬ソ浣堝眬寰屾暣鍊媀iew鐨勫搴︺?/span>
getMeasuredWidth(): 灝峍iew涓婄殑鍏у閫茶娓噺寰屽緱鍒扮殑View鍏у浣旀摎鐨勫搴︼紝鍓嶆彁鏄綘蹇呴爤鍦ㄧ埗浣堝眬鐨刼nLayout()鏂規硶鎴栬呮View鐨刼nDraw()鏂規硶瑁¤ 鐢╩easure(0,0);(measure 鍙冩暩鐨勫間綘鍙互鑷繁瀹氱京)錛屽惁鍓囦綘寰楀埌鐨勭祼鏋滃拰getWidth()寰楀埌鐨勭祼鏋滀竴妯c?/span>
涔熻ū鎴戠祫綣旂殑涓嶆槸寰堝ソ錛屽ぇ瀹舵湁浠楹間笉娓呮鐨勫湴鏂瑰啀緄︽垜鐣欒█銆傞棞鏂奸欏叐鍊嬫柟娉曠殑鍗鍒ュ氨鏄湅浣犳湁娌掓湁鐢╩easure()鏂規硶錛岀暥鐒秏easure錛堬級鐨勪綅緗篃鏄緢閲嶈鐨勩?/span>
涓?璜嬪皧閲嶅師鍓碉紝杞夎級璜嬭ɑ鏄庨欐槸http://hi.baidu.com/ljlkings/home鐨勭┖闁撱?/span>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Button1"
/>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="2"
android:text="Button2"
/>
</LinearLayout>
榪?閲屽layout_weight 璇翠竴涓嬭嚜宸辨柊鐨勮瑙o紝棣栧厛錛屽墠闈㈡湁涓鍙ヨ瘽“鍥犱負璁劇疆浜哹utton1鐨勬潈閲嶆渶灝忥紝鎵浠ュ畠鍗犵敤鐨勫竷灞灝辮秺澶?#8221;榪欏彞璇濆湪浣犵殑layout_width璁劇疆涓?fill_parent鐨勬椂鍊欐槸娌¢敊鐨勶紝鍙槸濡傛灉璁劇疆涓簑rap_content鐨勬椂鍊欙紝榪欏彞璇濆氨瑙i噴涓嶆竻浜嗭紝涓嬮潰鏄?/span>sunwayforever瀵規灞炴х殑璁よ瘑錛?/span>
璁懼睆騫曞搴︿負X
絎竴嬈?button1鐨刴easuredWidth涓篨,button2涔熶負X (鍥犱負鐢ㄤ簡weight,鎵浠inearLayout姣忔measure child鏃朵笉鑰冭檻鍓嶄竴涓凡緇忓崰鐢ㄧ殑澶у皬)錛宼otal_width涓?X
絎簩嬈★細璁$畻delta=x-total_width=-x,鐒跺悗浼氬皢button1鐨勫搴﹁涓?/span>
x+delta*1/3=0.66x, button2鐨勫搴︿負 x+delta*2/3=0.33x
閭i鍏堝垎鏋愪竴涓嬬暥layout_width灞цō緗偤fill_parent鐨勬檪鍊欙紝鍗沖厖婊跨埗浣堝眬錛岀暥鐒舵剰鎬濇槸閫欏嬫帶浠惰鏍規摎weight鐨勮ō緗洝鍙兘鐨?澶э紝鍥犳錛屼緷涓婁緥鑰岃珫錛宐utton1鐨剋eight璦偤1,button2鐨剋eight璦疆鐐?.鍗砨utton鐨勫劒鍏堢礆鏈楂橈紝鍥犳錛岃濉厖鐖朵綀灞灝?瑕乥utton1鍏堜締濉厖錛岀洝鍙兘鐨勫ぇ錛岄偅閫欏嬬洝鍙兘鍙堟槸澶氬皯鍛紝閫欏氨瑕佺稖鍚坙ayout瑁″叾浠栨帶浠剁殑weight鍊間簡錛岀劧寰屽仛涓涓嬮亱綆楋紝button1 浣旀摎2/3錛宐utton2浣旀摎1/3.浣犱篃鍙互鎶奲utton2璦疆鐐轟竴鍊嬮潪甯稿ぇ鐨勬暩錛屾瘮濡?000錛屾鏅傚湪Graphical Layout妯″紡涓嬪彲浠ョ湅鍒癰utton1濉厖婊夸簡鏁村嬪搴︼紝鑰岀湅涓嶅埌button2鐨勫獎瀛愶紝浜嬪涓奲utton2閭勬槸瀛樺湪鐨勶紝浣犳妸榧犳鎸囧悜 button1鐨勫緦闈㈠氨鍙互鐪嬪埌涓鍊嬮暦闀風殑璞庢錛岄偅鍊嬪氨鏄痓utton2錛屽凡綞撻潪甯擱潪甯稿皬浜嗐?/span>鍥犳錛屽湪layout_width璦疆鐐篺ill_parent鐨勬檪鍊欙紝weight鎵浠h〃鐨勬槸浣犵殑鎺т歡瑕佸劒鍏堢洝鍙兘鐨勫ぇ銆?/span>
鍦╨ayout_width璦疆鐐篺ill_parent鐨勬檪鍊欙紝layout_weight鎵浠h〃鐨勬槸浣犵殑鎺т歡瑕佸劒鍏堢洝鍙兘鐨勫ぇ,浣嗛欏嬪ぇ鏄湁闄愬害鐨勶紝鍗砯ill_parent.
鍦╨ayout_width璦疆鐐簑rap_content鐨勬檪鍊欙紝layout_weight鎵浠h〃鐨勬槸浣犵殑鎺т歡瑕佸劒鍏堢洝鍙兘鐨勫皬,浣嗛欏嬪皬鏄湁闄愬害鐨勶紝鍗硍rap_content.
杞嚜錛?/span>http://www.cnblogs.com/-OYK/archive/2011/10/30/2229620.html
]]>
/**
* Paint綾諱粙緇?nbsp;
*
* Paint鍗崇敾絎旓紝鍦ㄧ粯鍥捐繃紼嬩腑璧峰埌浜嗘瀬鍏墮噸瑕佺殑浣滅敤錛岀敾絎斾富瑕佷繚瀛樹簡棰滆壊錛?nbsp;
* 鏍峰紡絳夌粯鍒朵俊鎭紝鎸囧畾浜嗗浣曠粯鍒舵枃鏈拰鍥懼艦錛岀敾絎斿璞℃湁寰堝璁劇疆鏂規硶錛?nbsp;
* 澶т綋涓婂彲浠ュ垎涓轟袱綾伙紝涓綾諱笌鍥懼艦緇樺埗鐩稿叧錛屼竴綾諱笌鏂囨湰緇樺埗鐩稿叧銆?nbsp;
*
* 1.鍥懼艦緇樺埗
* setARGB(int a,int r,int g,int b);
* 璁劇疆緇樺埗鐨勯鑹詫紝a浠h〃閫忔槑搴︼紝r錛実錛宐浠h〃棰滆壊鍊箋?nbsp;
*
* setAlpha(int a);
* 璁劇疆緇樺埗鍥懼艦鐨勯忔槑搴︺?nbsp;
*
* setColor(int color);
* 璁劇疆緇樺埗鐨勯鑹詫紝浣跨敤棰滆壊鍊兼潵琛ㄧず錛岃棰滆壊鍊煎寘鎷忔槑搴﹀拰RGB棰滆壊銆?nbsp;
*
* setAntiAlias(boolean aa);
* 璁劇疆鏄惁浣跨敤鎶楅敮榻垮姛鑳斤紝浼氭秷鑰楄緝澶ц祫婧愶紝緇樺埗鍥懼艦閫熷害浼氬彉鎱€?nbsp;
*
* setDither(boolean dither);
* 璁懼畾鏄惁浣跨敤鍥懼儚鎶栧姩澶勭悊錛屼細浣跨粯鍒跺嚭鏉ョ殑鍥劇墖棰滆壊鏇村姞騫蟲粦鍜岄ケ婊★紝鍥懼儚鏇村姞娓呮櫚
*
* setFilterBitmap(boolean filter);
* 濡傛灉璇ラ」璁劇疆涓簍rue錛屽垯鍥懼儚鍦ㄥ姩鐢昏繘琛屼腑浼氭護鎺夊Bitmap鍥懼儚鐨勪紭鍖栨搷浣滐紝鍔犲揩鏄劇ず
* 閫熷害錛屾湰璁劇疆欏逛緷璧栦簬dither鍜寈fermode鐨勮緗?nbsp;
*
* setMaskFilter(MaskFilter maskfilter);
* 璁劇疆MaskFilter錛屽彲浠ョ敤涓嶅悓鐨凪askFilter瀹炵幇婊ら暅鐨勬晥鏋滐紝濡傛護鍖栵紝绔嬩綋絳?nbsp; *
* setColorFilter(ColorFilter colorfilter);
* 璁劇疆棰滆壊榪囨護鍣紝鍙互鍦ㄧ粯鍒墮鑹叉椂瀹炵幇涓嶇敤棰滆壊鐨勫彉鎹㈡晥鏋?nbsp;
*
* setPathEffect(PathEffect effect);
* 璁劇疆緇樺埗璺緞鐨勬晥鏋滐紝濡傜偣鐢葷嚎絳?nbsp;
*
* setShader(Shader shader);
* 璁劇疆鍥懼儚鏁堟灉錛屼嬌鐢⊿hader鍙互緇樺埗鍑哄悇縐嶆笎鍙樻晥鏋?nbsp;
*
* setShadowLayer(float radius ,float dx,float dy,int color);
* 鍦ㄥ浘褰笅闈㈣緗槾褰卞眰錛屼駭鐢熼槾褰辨晥鏋滐紝radius涓洪槾褰辯殑瑙掑害錛宒x鍜宒y涓洪槾褰卞湪x杞村拰y杞翠笂鐨勮窛紱伙紝color涓洪槾褰辯殑棰滆壊
*
* setStyle(Paint.Style style);
* 璁劇疆鐢葷瑪鐨勬牱寮忥紝涓篎ILL錛孎ILL_OR_STROKE錛屾垨STROKE
*
* setStrokeCap(Paint.Cap cap);
* 褰撶敾絎旀牱寮忎負STROKE鎴朏ILL_OR_STROKE鏃訛紝璁劇疆絎斿埛鐨勫浘褰㈡牱寮忥紝濡傚渾褰㈡牱寮?nbsp;
* Cap.ROUND,鎴栨柟褰㈡牱寮廋ap.SQUARE
*
* setSrokeJoin(Paint.Join join);
* 璁劇疆緇樺埗鏃跺悇鍥懼艦鐨勭粨鍚堟柟寮忥紝濡傚鉤婊戞晥鏋滅瓑
*
* setStrokeWidth(float width);
* 褰撶敾絎旀牱寮忎負STROKE鎴朏ILL_OR_STROKE鏃訛紝璁劇疆絎斿埛鐨勭矖緇嗗害
*
* setXfermode(Xfermode xfermode);
* 璁劇疆鍥懼艦閲嶅彔鏃剁殑澶勭悊鏂瑰紡錛屽鍚堝茍錛屽彇浜ら泦鎴栧茍闆嗭紝緇忓父鐢ㄦ潵鍒朵綔姍$毊鐨勬摝闄ゆ晥鏋?nbsp;
*
* 2.鏂囨湰緇樺埗
* setFakeBoldText(boolean fakeBoldText);
* 妯℃嫙瀹炵幇綺椾綋鏂囧瓧錛岃緗湪灝忓瓧浣撲笂鏁堟灉浼氶潪甯稿樊
*
* setSubpixelText(boolean subpixelText);
* 璁劇疆璇ラ」涓簍rue錛屽皢鏈夊姪浜庢枃鏈湪LCD灞忓箷涓婄殑鏄劇ず鏁堟灉
*
* setTextAlign(Paint.Align align);
* 璁劇疆緇樺埗鏂囧瓧鐨勫榻愭柟鍚?nbsp;
*
* setTextScaleX(float scaleX);
* 璁劇疆緇樺埗鏂囧瓧x杞寸殑緙╂斁姣斾緥錛屽彲浠ュ疄鐜版枃瀛楃殑鎷変幾鐨勬晥鏋?nbsp;
*
* setTextSize(float textSize);
* 璁劇疆緇樺埗鏂囧瓧鐨勫瓧鍙峰ぇ灝?nbsp;
*
* setTextSkewX(float skewX);
* 璁劇疆鏂滀綋鏂囧瓧錛宻kewX涓哄炬枩寮у害
*
* setTypeface(Typeface typeface);
* 璁劇疆Typeface瀵硅薄錛屽嵆瀛椾綋椋庢牸錛屽寘鎷矖浣擄紝鏂滀綋浠ュ強琛嚎浣擄紝闈炶‖綰夸綋絳?nbsp;
*
* setUnderlineText(boolean underlineText);
* 璁劇疆甯︽湁涓嬪垝綰跨殑鏂囧瓧鏁堟灉
*
* setStrikeThruText(boolean strikeThruText);
* 璁劇疆甯︽湁鍒犻櫎綰跨殑鏁堟灉
*
*/
鏈枃杞嚜錛?a >http://www.cnblogs.com/-OYK/archive/2011/10/25/2223624.html