bug修改記錄總結(不定時更新)

1,Gallery滑動的時候,當前的Item圖片會變暗,表面浮一層白膜,緊跟的一個Item的圖片會由一層白膜變成正常狀態,這時只需要設置Gallery的一個屬性即可。。

      setUnselectedAlpha(100);設置未選中的Item的透明度爲100.。。。。

2,Activity使用Dialog樣式導致點擊空白處自動關閉的問題

將Activity設置成窗口的樣式實現Dialog或者Popupwindow效果在開發中是很常用的一種方式,在AndroidMenifest.xml中將需要設置的Activity增加android:theme="@android:style/Theme.Dialog"屬性即可。但是窗口化的Activity有個問題就是:點擊窗口空白處Activity會finish。如何避免這個問題呢,辦法如下:

一、如果API Level>=11有兩種方式:
1、
res\values\styles.xml
[html] view plaincopy
  1. <resources>  
  2.     <style name="Theme.SoundRecorder" parent="@android:style/Theme.Holo.DialogWhenLarge">  
  3.         <item name="android:windowCloseOnTouchOutside">false</item>  
  4.     </style>  
  5. </resources>  
2、
[java] view plaincopy
  1. YourActivity.this.setFinishOnTouchOutside(false);  

二、如果API Level<11
[java] view plaincopy
  1. @Override  
  2.     public boolean onTouchEvent(MotionEvent event) {  
  3.         if (event.getAction() == MotionEvent.ACTION_DOWN && isOutOfBounds(this, event)) {  
  4.             return true;  
  5.         }  
  6.         return super.onTouchEvent(event);  
  7.     }  
  8.   
  9.     private boolean isOutOfBounds(Activity context, MotionEvent event) {  
  10.         final int x = (int) event.getX();  
  11.         final int y = (int) event.getY();  
  12.         final int slop = ViewConfiguration.get(context).getScaledWindowTouchSlop();  
  13.         final View decorView = context.getWindow().getDecorView();  
  14.         return (x < -slop) || (y < -slop)|| (x > (decorView.getWidth() + slop))|| (y > (decorView.getHeight() + slop));  
  15.     }  


3,報異常java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. [in ListView(2131296397, class android.widget.ListView) with Adapter(class com.etaoshi.etaoke.adapter.DishAdapter)]。。

剛開始以爲是view不應該在子線程中做操作,後來修改了依然出問題。。。

最後發現,原來是adapter也不能在子線程中做setEnable(false)操作。。。鬱悶了一下午。。。終於搞定了

4.在做初始化同意條款的時候,用SharePreference來保存狀態值,但是從下載process進去時候,取得的狀態值還是沒改變的值。後來經過查找,才知道是SharePreference跨進程的問題,需要在生成SharePreference時候需要把Sharedpreferences的訪問模式改爲MODE_MULTI_PROCESS,這樣便可以實時讀取Sharedpreferences中修改後的值。另外,把AndroidMainfest.xml中的android:process=":remote"這一行去掉,把Sharedpreferences的訪問模式改爲MODE_PRIVATE,這樣也可以實時讀取。


5.用ScrollView和GridView,listview來畫整個佈局UI

通常ScrollView裏面是不能放GridView或者ListView的,但是如果我們需要有這個需求的話,就需要對GridView或者ListView做一點兒修改,方法如下:

①自定義MyGridView,它繼承自GridView或者ListView

②重寫GirdView或者ListView的OnMesure方法,

       @Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}

這樣,當ScrollView和GridView或者Listview一起的時候,就不會出現加載列表數據,然後GridView或者listview中的每個Item的View顯示不出來的問題了。。。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章