00_小知识点
1.
? ??底部控件不受輸入法影響被頂?shù)缴戏?span style="font-family:Helvetica, 'Hiragino Sans GB', '微軟雅黑', 'Microsoft YaHei UI', SimSun, SimHei, arial;">? ? 解:在AndroidManifest.xml中給這個(gè)Activity設(shè)置 <activity android:windowSoftInputMode="stateVisible|adjustPan" >
2.
? ??動(dòng)態(tài)設(shè)置控件margin值? ? 解:
? ??? ? LayoutParams是RelativeLayout或者LinearLayout看控件的父節(jié)點(diǎn),一般參數(shù)都是wrap_content,然后把獲? ??得的參數(shù)設(shè)置margin,params.setMargin(左,上,右,下),最后控件設(shè)置參數(shù),mView.setLayoutParams(params)
? ??? ??RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);Display display = wm.getDefaultDisplay();int screenWidth = display.getWidth();int marginLeft = screenWidth / 5 ;params.setMargins(marginLeft * 4 - marginLeft / 2,0,0,0);mTv_shoppingcart_num.setLayoutParams(params);
3.
? ??Fragment切換時(shí)想要保存數(shù)據(jù):要用add,show,hide.不能用replace,它會(huì)重新創(chuàng)建fragment? ? 底部用RadioButton實(shí)現(xiàn),實(shí)現(xiàn)setOnCheckedChangeListener()
? ??
? ???mBottom_Rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {FragmentTransaction ft =? mFm.beginTransaction();hideFragments(ft);switch (checkedId) {case R.id.bottom_rb_home:if (mHomeFragment == null) {mHomeFragment = new HomeFragment();ft.add(R.id.fl_content, mHomeFragment);} else {ft.show(mHomeFragment);}? ? ? ? ? ? ? ? ? ? ? ? break;? ??? ??? ??? ? }? ??? ??? ??? ??? ??? ??? ??? ? ft.commit();? ??? ??? ? }? ?? ??});
? ??private void hideFragments(FragmentTransaction ft) {if (mHomeFragment != null) {ft.hide(mHomeFragment);}if (mSearchFragment != null) {ft.hide(mSearchFragment);}if (mBrandFragment != null) {ft.hide(mBrandFragment);}if (mShoppingCartFragment != null) {ft.hide(mShoppingCartFragment);}if (mMoreFragment != null) {ft.hide(mMoreFragment);}}
4.? ??給listview添加頭布局,并且設(shè)置頭布局不可被點(diǎn)擊? ? 解:
? ??? ??View headView = View.inflate(this, R.layout.head_view, null);mListView.addHeaderView(headView,null,false);
5.
讓splash界面全屏顯示:確認(rèn)SplashActivty是否繼承自Activity,AndroidStudio自動(dòng)創(chuàng)建時(shí)默認(rèn)繼承AppCompatActivity,必須更改為Activity,在清單文件對(duì)應(yīng)的splash的activity節(jié)點(diǎn)下增加:android:theme="@android:style/Theme.NoTitleBar.Fullscreen"屬性即可
6.
Fragment的hide/show方法,當(dāng)show的時(shí)候執(zhí)行等同于Activity的OnResume,hide的時(shí)候執(zhí)行等同于Activity的OnPause方法:? ? Fragment的OnHiddenChanged(boolean hidden) 方法,當(dāng)fragment調(diào)用了hide方法,就會(huì)傳入true參數(shù)表示該fragment被隱藏了,當(dāng)fragment調(diào)用了show方法后,該方法就會(huì)傳入了參數(shù)為false表示該fragment被顯示了? ??? ? if(hidden){ //不在最前端界面顯示 ? 等價(jià)于=> OnPause? ??? ??? ? } else { ? ?//重新顯示到最前端 ? ? 等價(jià)于=> OnResume? ??? ? }
7.? ??listview條目點(diǎn)擊變色,自定義變色,item點(diǎn)擊變色
一般Listview條目被點(diǎn)擊需要自定義點(diǎn)擊時(shí)顏色變化,這里給出一種簡(jiǎn)單方法。ListView的listSelector屬性設(shè)置為#00000000或@null ?或android:listSelector="@android:color/transparent",后條目點(diǎn)擊就沒(méi)有變化了 ,再設(shè)置item的background即可。android:background="@drawable/bg_item"<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:drawable="@android:color/white" android:state_pressed="false"/><item android:drawable="@color/holo_blue_light" android:state_pressed="true"/></selector>
8.
? ??listview條目上有checkbox搶焦點(diǎn)的處理辦法
方法一在checkbox的父布局上設(shè)置屬性android:descendantFocusability="blocksDescendants"該屬性使子布局的焦點(diǎn)按各自的區(qū)塊劃分,這樣checkbox搶焦點(diǎn)的范圍僅限于自身,不會(huì)把整個(gè)item的焦點(diǎn)都搶走。這種設(shè)置方式會(huì)使得checkbox有自己的響應(yīng)事件,同時(shí)checkbox之外的item區(qū)域也可以響應(yīng)自己的點(diǎn)擊事件。
方法二在checkbox布局里設(shè)置屬性、android:focusable="false"android:clickable="false"android:enabled="false"使得checkbox完全不能獲得焦點(diǎn)、不可被點(diǎn)擊、不能響應(yīng)點(diǎn)擊事件。這樣之后的效果就是checkbox區(qū)域不會(huì)再有自己的事件,就算點(diǎn)擊的checkbox,也響應(yīng)這個(gè)item的點(diǎn)擊事件。同時(shí)要記得在item的點(diǎn)擊事件中判斷checkbox的當(dāng)前狀態(tài),并手動(dòng)變更c(diǎn)heckbox的狀態(tài)
9.? ? 取消EditText下劃線:給控件設(shè)置background屬性,可以設(shè)置為白色(和父布局背景有關(guān)),也可以設(shè)置為透明(推薦設(shè)置為透明),(還未驗(yàn)證background設(shè)置為@null)? ??android:background="@android:color/transparent"
10.? ? 用到fragment疊加時(shí),出現(xiàn)背景疊加,可以給fragment的父布局設(shè)置一個(gè)白色背景,即可
11.? ? listview的數(shù)據(jù)為空的時(shí)候可以設(shè)置可以設(shè)置一張空背景圖
? ? listview.setEmptyView(...);
12.? ? 將listview的分割線隱藏,并且設(shè)置條目之間的距離
? ??android:divider="@android:color/transparent" //將分割線設(shè)置為透明android:dividerHeight="18dp"? ??? ??? ??? ? ?//將分割線高度設(shè)置為18dp
? ??android:listSelector="@android:color/transparent" ?//將條目的點(diǎn)擊選擇狀態(tài)改為透明
? ? 然后給item的父布局background設(shè)置背景狀態(tài)選擇器,這樣就會(huì)顯示點(diǎn)擊條目? ? 狀態(tài)選擇器:
? ??<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:drawable="@drawable/shape_listview_pressed"android:state_pressed="true"/><item android:drawable="@drawable/shape_listview"/>? ??</selector>? ??
? ? 自定義的形狀:
? ??<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><cornersandroid:bottomLeftRadius="10dp"android:bottomRightRadius="10dp"android:topLeftRadius="10dp"android:topRightRadius="10dp"/><solid android:color="#2f00"/><stroke android:width="1dp" android:color="#f00"/>? ??</shape>
? ??
13.? ? 給RadioButton選中改變顏色(動(dòng)態(tài)改變顏色)
? ??radiobutton字體顏色改變color_radiobutton.xml? ??? ??(新建文件,寫(xiě)在color文件夾下,不是values的colors.xml,給RadioButton的textColor設(shè)置"@color/xxx")<?xml?version="1.0"?encoding="utf-8"?>?? <selector?xmlns:android="http://schemas.android.com/apk/res/android">?? ????<item?android:state_checked="true"?android:color="@color/color_text_selected"/>???? ????<!--?not?selected?-->???? ????<item?android:state_checked="false"?android:color="@color/color_text_normal"/>???? </selector>?? <?xml?version="1.0"?encoding="utf-8"?>?? <selector?xmlns:android="http://schemas.android.com/apk/res/android"?>?? ????<item?android:state_checked="true"?android:drawable="@color/color_bg_selected"?></item>?? ????<item?android:state_checked="false"?android:drawable="@color/color_bg_normal"></item>?? </selector>?? <color?name="transparent">#000000</color>?? ????<color?name="color_bg_selected">#e0301e</color>?? ????<color?name="color_bg_normal">#e7e7e8</color>?? ????<color?name="color_text_selected">#ffffff</color>?? ????<color?name="color_text_normal">#000000</color>??
14.? ? Activity的啟動(dòng)模式為singleTask時(shí),(任務(wù)棧中activity打開(kāi)過(guò),直接殺死其上方的activity并且將自己置于棧頂)
要從其他頁(yè)面?zhèn)髦到o這個(gè)activity時(shí)要在這個(gè)設(shè)置singleTask的Activity中重新 onNewIntent()方法,加入setIntent(intent);
? ??@Override??? protected void onNewIntent(Intent intent) {??????? super.onNewIntent(intent);???????? setIntent(intent);??????? mShopping_cart.setChecked(true);??????? requestNetwork();??? }
15.? ? listview中包含checkbox勾選刪除,第一個(gè)條目一直選中bug,解決方案
? ??checkBox.setChecked(false);checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {? ??@Override? ??public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {? ??? ??if (isChecked) {? ??? ??? ??info.isChecked = isChecked;}}});
16.? ??android.content.res.Resources$NotFoundException: String resource ID #0x1
? ? 報(bào)這個(gè)錯(cuò)誤表明:setText的時(shí)候應(yīng)該傳String卻傳了int
17.? ? ScrollView只能接受一個(gè)子節(jié)點(diǎn)
? ? 解:ScrollView只能有一個(gè)子節(jié)點(diǎn),所以在ScrollView里嵌套一個(gè)ViewGroup(可以是LinearLayout),然后在LinearLayout里寫(xiě)一個(gè)布局
18.? ? 使EditText進(jìn)入界面默認(rèn)不跳出軟鍵盤(pán)(不獲得焦點(diǎn))
? ? 解:給EditText的父控件設(shè)置屬性:
? ??android:focusable="true"??? android:focusableInTouchMode="true"
? ? 點(diǎn)擊EditText區(qū)域外讓EditText失去焦點(diǎn)? ? 解:給父布局設(shè)置觸摸監(jiān)聽(tīng),設(shè)置focusable為true,設(shè)置focusable的觸摸模式為true,最后請(qǐng)求焦點(diǎn)
? ??mLinearLayout.setOnTouchListener(new View.OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {mLinearLayout.setFocusable(true);mLinearLayout.setFocusableInTouchMode(true);mLinearLayout.requestFocus();? ? ? ? ? ? ? ?return false;}});
19.? ? 點(diǎn)擊EditText區(qū)域外,隱藏輸入法
? ??@Overridepublic boolean dispatchTouchEvent(MotionEvent ev) {if (ev.getAction() == MotionEvent.ACTION_DOWN) {View v = getCurrentFocus();if (isShouldHideInput(v, ev)) {InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);if (imm != null) {imm.hideSoftInputFromWindow(v.getWindowToken(), 0);}}return super.dispatchTouchEvent(ev);}// 必不可少,否則所有的組件都不會(huì)有TouchEvent了if (getWindow().superDispatchTouchEvent(ev)) {return true;}return onTouchEvent(ev);}public? boolean isShouldHideInput(View v, MotionEvent event) {if (v != null && (v instanceof EditText)) {int[] leftTop = { 0, 0 };//獲取輸入框當(dāng)前的location位置v.getLocationInWindow(leftTop);int left = leftTop[0];int top = leftTop[1];int bottom = top + v.getHeight();int right = left + v.getWidth();if (event.getX() > left && event.getX() < right&& event.getY() > top && event.getY() < bottom) {// 點(diǎn)擊的是輸入框區(qū)域,保留點(diǎn)擊EditText的事件return false;} else {return true;}}return false;}
20.? ? 給ListView添加頭布局,必須在setAdapter之前設(shè)置添加,在布局中可以給布局點(diǎn)擊的selector
? ??View view = View.inflate(this,R.layout.headview,null);mListView.addHeaderView(view,null,false);? ??mListView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,getData()));
? ? 設(shè)置ListView的HeaderView不可被點(diǎn)擊
? ??mListView.addHeaderView(view,null,false);
21.? ? 單例設(shè)計(jì)模式:避免在項(xiàng)目中多次new對(duì)象,多次調(diào)用相同代碼
? ??public class DataLoader {? ??? ? //1.私有構(gòu)造函數(shù),禁止其他類(lèi)創(chuàng)建其對(duì)象
private DataLoader(){}//2.創(chuàng)建本類(lèi)對(duì)象,并且私有和靜態(tài)(靜態(tài)是為了下面getInstance是靜態(tài)的,類(lèi)剛加載不是靜態(tài)的不初始化private static DataLoader mInstance = new DataLoader();//3.提供外部公共的訪問(wèn)方式去獲取其類(lèi)對(duì)象,返回值是其類(lèi)的本身public static DataLoader getInstance() {return mInstance;}? ??}
22.? ? 打分星星(可以拖動(dòng),設(shè)置android:isIndicator="true"不可拖動(dòng),將作為指示器)? ??? ?? <RatingBar android:id="@+id/rb_stars" style="@android:style/Widget.RatingBar" android:numStars="5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:minHeight="15dp" android:progressDrawable="@drawable/ratingbar" android:rating="4"/> progressDrawable的ratingbar.xml<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@android:id/background" android:drawable="@drawable/rating_small_empty" /> <item android:id="@android:id/secondaryProgress" android:drawable="@drawable/rating_small_empty" /> <item android:id="@android:id/progress" android:drawable="@drawable/rating_small_full" /> </layer-list>
23.????????? ??//告訴Android系統(tǒng)對(duì)主線程訪問(wèn)網(wǎng)絡(luò)和文件的檢查策略不要這么嚴(yán)厲StrictMode.setThreadPolicy(StrictMode.ThreadPolicy.LAX);
24.? ? 隨機(jī)設(shè)置字體大小,字體顏色(Color.rgb(int,int,int)) Random random = new Random(); int randomTextSize = random.nextInt(13) + 12; textView.setTextSize(randomTextSize); int red = random.nextInt(200); int green = random.nextInt(200); int blue = random.nextInt(200); textView.setTextColor(Color.rgb(red,green,blue));
25.? ??
? ? ListView的條目布局上是三塊View,但點(diǎn)擊條目時(shí),整個(gè)條目都被選中點(diǎn)擊了,這個(gè)時(shí)候可以給,這三個(gè)view設(shè)置一個(gè)android:clickable="true"屬性即可.
26.? ? 使用第三方imageloader時(shí)錯(cuò)誤:Java.lang.RuntimeException: ImageLoader must be init with configuration before using
? ? 解:在Application的類(lèi)中onCreate方法內(nèi)加上:??? ??ImageLoader.getInstance().init(ImageLoaderConfiguration.createDefault(this));
27.? ? listview加了headerview.第0條條目,position需要+1
? ??
? ??
來(lái)自為知筆記(Wiz)
? ??底部控件不受輸入法影響被頂?shù)缴戏?span style="font-family:Helvetica, 'Hiragino Sans GB', '微軟雅黑', 'Microsoft YaHei UI', SimSun, SimHei, arial;">? ? 解:在AndroidManifest.xml中給這個(gè)Activity設(shè)置 <activity android:windowSoftInputMode="stateVisible|adjustPan" >
2.
? ??動(dòng)態(tài)設(shè)置控件margin值? ? 解:
? ??? ? LayoutParams是RelativeLayout或者LinearLayout看控件的父節(jié)點(diǎn),一般參數(shù)都是wrap_content,然后把獲? ??得的參數(shù)設(shè)置margin,params.setMargin(左,上,右,下),最后控件設(shè)置參數(shù),mView.setLayoutParams(params)
? ??? ??RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);Display display = wm.getDefaultDisplay();int screenWidth = display.getWidth();int marginLeft = screenWidth / 5 ;params.setMargins(marginLeft * 4 - marginLeft / 2,0,0,0);mTv_shoppingcart_num.setLayoutParams(params);
3.
? ??Fragment切換時(shí)想要保存數(shù)據(jù):要用add,show,hide.不能用replace,它會(huì)重新創(chuàng)建fragment? ? 底部用RadioButton實(shí)現(xiàn),實(shí)現(xiàn)setOnCheckedChangeListener()
? ??
? ???mBottom_Rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {FragmentTransaction ft =? mFm.beginTransaction();hideFragments(ft);switch (checkedId) {case R.id.bottom_rb_home:if (mHomeFragment == null) {mHomeFragment = new HomeFragment();ft.add(R.id.fl_content, mHomeFragment);} else {ft.show(mHomeFragment);}? ? ? ? ? ? ? ? ? ? ? ? break;? ??? ??? ??? ? }? ??? ??? ??? ??? ??? ??? ??? ? ft.commit();? ??? ??? ? }? ?? ??});
? ??private void hideFragments(FragmentTransaction ft) {if (mHomeFragment != null) {ft.hide(mHomeFragment);}if (mSearchFragment != null) {ft.hide(mSearchFragment);}if (mBrandFragment != null) {ft.hide(mBrandFragment);}if (mShoppingCartFragment != null) {ft.hide(mShoppingCartFragment);}if (mMoreFragment != null) {ft.hide(mMoreFragment);}}
4.? ??給listview添加頭布局,并且設(shè)置頭布局不可被點(diǎn)擊? ? 解:
? ??? ??View headView = View.inflate(this, R.layout.head_view, null);mListView.addHeaderView(headView,null,false);
5.
讓splash界面全屏顯示:確認(rèn)SplashActivty是否繼承自Activity,AndroidStudio自動(dòng)創(chuàng)建時(shí)默認(rèn)繼承AppCompatActivity,必須更改為Activity,在清單文件對(duì)應(yīng)的splash的activity節(jié)點(diǎn)下增加:android:theme="@android:style/Theme.NoTitleBar.Fullscreen"屬性即可
6.
Fragment的hide/show方法,當(dāng)show的時(shí)候執(zhí)行等同于Activity的OnResume,hide的時(shí)候執(zhí)行等同于Activity的OnPause方法:? ? Fragment的OnHiddenChanged(boolean hidden) 方法,當(dāng)fragment調(diào)用了hide方法,就會(huì)傳入true參數(shù)表示該fragment被隱藏了,當(dāng)fragment調(diào)用了show方法后,該方法就會(huì)傳入了參數(shù)為false表示該fragment被顯示了? ??? ? if(hidden){ //不在最前端界面顯示 ? 等價(jià)于=> OnPause? ??? ??? ? } else { ? ?//重新顯示到最前端 ? ? 等價(jià)于=> OnResume? ??? ? }
7.? ??listview條目點(diǎn)擊變色,自定義變色,item點(diǎn)擊變色
一般Listview條目被點(diǎn)擊需要自定義點(diǎn)擊時(shí)顏色變化,這里給出一種簡(jiǎn)單方法。ListView的listSelector屬性設(shè)置為#00000000或@null ?或android:listSelector="@android:color/transparent",后條目點(diǎn)擊就沒(méi)有變化了 ,再設(shè)置item的background即可。android:background="@drawable/bg_item"<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:drawable="@android:color/white" android:state_pressed="false"/><item android:drawable="@color/holo_blue_light" android:state_pressed="true"/></selector>
8.
? ??listview條目上有checkbox搶焦點(diǎn)的處理辦法
方法一在checkbox的父布局上設(shè)置屬性android:descendantFocusability="blocksDescendants"該屬性使子布局的焦點(diǎn)按各自的區(qū)塊劃分,這樣checkbox搶焦點(diǎn)的范圍僅限于自身,不會(huì)把整個(gè)item的焦點(diǎn)都搶走。這種設(shè)置方式會(huì)使得checkbox有自己的響應(yīng)事件,同時(shí)checkbox之外的item區(qū)域也可以響應(yīng)自己的點(diǎn)擊事件。
方法二在checkbox布局里設(shè)置屬性、android:focusable="false"android:clickable="false"android:enabled="false"使得checkbox完全不能獲得焦點(diǎn)、不可被點(diǎn)擊、不能響應(yīng)點(diǎn)擊事件。這樣之后的效果就是checkbox區(qū)域不會(huì)再有自己的事件,就算點(diǎn)擊的checkbox,也響應(yīng)這個(gè)item的點(diǎn)擊事件。同時(shí)要記得在item的點(diǎn)擊事件中判斷checkbox的當(dāng)前狀態(tài),并手動(dòng)變更c(diǎn)heckbox的狀態(tài)
9.? ? 取消EditText下劃線:給控件設(shè)置background屬性,可以設(shè)置為白色(和父布局背景有關(guān)),也可以設(shè)置為透明(推薦設(shè)置為透明),(還未驗(yàn)證background設(shè)置為@null)? ??android:background="@android:color/transparent"
10.? ? 用到fragment疊加時(shí),出現(xiàn)背景疊加,可以給fragment的父布局設(shè)置一個(gè)白色背景,即可
11.? ? listview的數(shù)據(jù)為空的時(shí)候可以設(shè)置可以設(shè)置一張空背景圖
? ? listview.setEmptyView(...);
12.? ? 將listview的分割線隱藏,并且設(shè)置條目之間的距離
? ??android:divider="@android:color/transparent" //將分割線設(shè)置為透明android:dividerHeight="18dp"? ??? ??? ??? ? ?//將分割線高度設(shè)置為18dp
? ??android:listSelector="@android:color/transparent" ?//將條目的點(diǎn)擊選擇狀態(tài)改為透明
? ? 然后給item的父布局background設(shè)置背景狀態(tài)選擇器,這樣就會(huì)顯示點(diǎn)擊條目? ? 狀態(tài)選擇器:
? ??<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:drawable="@drawable/shape_listview_pressed"android:state_pressed="true"/><item android:drawable="@drawable/shape_listview"/>? ??</selector>? ??
? ? 自定義的形狀:
? ??<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><cornersandroid:bottomLeftRadius="10dp"android:bottomRightRadius="10dp"android:topLeftRadius="10dp"android:topRightRadius="10dp"/><solid android:color="#2f00"/><stroke android:width="1dp" android:color="#f00"/>? ??</shape>
? ??
13.? ? 給RadioButton選中改變顏色(動(dòng)態(tài)改變顏色)
? ??radiobutton字體顏色改變color_radiobutton.xml? ??? ??(新建文件,寫(xiě)在color文件夾下,不是values的colors.xml,給RadioButton的textColor設(shè)置"@color/xxx")
?
radiobutton背景顏色改變r(jià)adio_group_selector.xml
color.xml(as的values的是colors.xml文件)
14.? ? Activity的啟動(dòng)模式為singleTask時(shí),(任務(wù)棧中activity打開(kāi)過(guò),直接殺死其上方的activity并且將自己置于棧頂)
要從其他頁(yè)面?zhèn)髦到o這個(gè)activity時(shí)要在這個(gè)設(shè)置singleTask的Activity中重新 onNewIntent()方法,加入setIntent(intent);
? ??@Override??? protected void onNewIntent(Intent intent) {??????? super.onNewIntent(intent);???????? setIntent(intent);??????? mShopping_cart.setChecked(true);??????? requestNetwork();??? }
15.? ? listview中包含checkbox勾選刪除,第一個(gè)條目一直選中bug,解決方案
? ??checkBox.setChecked(false);checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {? ??@Override? ??public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {? ??? ??if (isChecked) {? ??? ??? ??info.isChecked = isChecked;}}});
16.? ??android.content.res.Resources$NotFoundException: String resource ID #0x1
? ? 報(bào)這個(gè)錯(cuò)誤表明:setText的時(shí)候應(yīng)該傳String卻傳了int
17.? ? ScrollView只能接受一個(gè)子節(jié)點(diǎn)
? ? 解:ScrollView只能有一個(gè)子節(jié)點(diǎn),所以在ScrollView里嵌套一個(gè)ViewGroup(可以是LinearLayout),然后在LinearLayout里寫(xiě)一個(gè)布局
18.? ? 使EditText進(jìn)入界面默認(rèn)不跳出軟鍵盤(pán)(不獲得焦點(diǎn))
? ? 解:給EditText的父控件設(shè)置屬性:
? ??android:focusable="true"??? android:focusableInTouchMode="true"
? ? 點(diǎn)擊EditText區(qū)域外讓EditText失去焦點(diǎn)? ? 解:給父布局設(shè)置觸摸監(jiān)聽(tīng),設(shè)置focusable為true,設(shè)置focusable的觸摸模式為true,最后請(qǐng)求焦點(diǎn)
? ??mLinearLayout.setOnTouchListener(new View.OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {mLinearLayout.setFocusable(true);mLinearLayout.setFocusableInTouchMode(true);mLinearLayout.requestFocus();? ? ? ? ? ? ? ?return false;}});
19.? ? 點(diǎn)擊EditText區(qū)域外,隱藏輸入法
? ??@Overridepublic boolean dispatchTouchEvent(MotionEvent ev) {if (ev.getAction() == MotionEvent.ACTION_DOWN) {View v = getCurrentFocus();if (isShouldHideInput(v, ev)) {InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);if (imm != null) {imm.hideSoftInputFromWindow(v.getWindowToken(), 0);}}return super.dispatchTouchEvent(ev);}// 必不可少,否則所有的組件都不會(huì)有TouchEvent了if (getWindow().superDispatchTouchEvent(ev)) {return true;}return onTouchEvent(ev);}public? boolean isShouldHideInput(View v, MotionEvent event) {if (v != null && (v instanceof EditText)) {int[] leftTop = { 0, 0 };//獲取輸入框當(dāng)前的location位置v.getLocationInWindow(leftTop);int left = leftTop[0];int top = leftTop[1];int bottom = top + v.getHeight();int right = left + v.getWidth();if (event.getX() > left && event.getX() < right&& event.getY() > top && event.getY() < bottom) {// 點(diǎn)擊的是輸入框區(qū)域,保留點(diǎn)擊EditText的事件return false;} else {return true;}}return false;}
20.? ? 給ListView添加頭布局,必須在setAdapter之前設(shè)置添加,在布局中可以給布局點(diǎn)擊的selector
? ??View view = View.inflate(this,R.layout.headview,null);mListView.addHeaderView(view,null,false);? ??mListView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,getData()));
? ? 設(shè)置ListView的HeaderView不可被點(diǎn)擊
? ??mListView.addHeaderView(view,null,false);
21.? ? 單例設(shè)計(jì)模式:避免在項(xiàng)目中多次new對(duì)象,多次調(diào)用相同代碼
? ??public class DataLoader {? ??? ? //1.私有構(gòu)造函數(shù),禁止其他類(lèi)創(chuàng)建其對(duì)象
private DataLoader(){}//2.創(chuàng)建本類(lèi)對(duì)象,并且私有和靜態(tài)(靜態(tài)是為了下面getInstance是靜態(tài)的,類(lèi)剛加載不是靜態(tài)的不初始化private static DataLoader mInstance = new DataLoader();//3.提供外部公共的訪問(wèn)方式去獲取其類(lèi)對(duì)象,返回值是其類(lèi)的本身public static DataLoader getInstance() {return mInstance;}? ??}
22.? ? 打分星星(可以拖動(dòng),設(shè)置android:isIndicator="true"不可拖動(dòng),將作為指示器)? ??? ??
23.????????? ??//告訴Android系統(tǒng)對(duì)主線程訪問(wèn)網(wǎng)絡(luò)和文件的檢查策略不要這么嚴(yán)厲
24.? ? 隨機(jī)設(shè)置字體大小,字體顏色(Color.rgb(int,int,int))
25.? ??
? ? ListView的條目布局上是三塊View,但點(diǎn)擊條目時(shí),整個(gè)條目都被選中點(diǎn)擊了,這個(gè)時(shí)候可以給,這三個(gè)view設(shè)置一個(gè)android:clickable="true"屬性即可.
26.? ? 使用第三方imageloader時(shí)錯(cuò)誤:Java.lang.RuntimeException: ImageLoader must be init with configuration before using
? ? 解:在Application的類(lèi)中onCreate方法內(nèi)加上:??? ??ImageLoader.getInstance().init(ImageLoaderConfiguration.createDefault(this));
27.? ? listview加了headerview.第0條條目,position需要+1
? ??
? ??
來(lái)自為知筆記(Wiz)
轉(zhuǎn)載于:https://www.cnblogs.com/ice5-blog/p/5534803.html
總結(jié)
- 上一篇: DM9000网卡原理与基地址设置
- 下一篇: ibus五笔快捷键 繁简 单字 词组切