2014-01-14 73 views
0

我將圖像添加到一個gridview,一切完美,直到我將手機橫置,在GridView即消失的所有圖像,並在日誌圖像轉向手機端的方式

SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length 
出現此錯誤時消失

我用我的GridView中獲取圖像通過手機的相機這樣

Intent camera_intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
startActivityForResult(camera_intent, CAMERA_PIC_REQUEST); 

後,我打電話圖像適配器

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    switch(requestCode){ 
    case 0: 
     if(resultCode==RESULT_OK){ 
      Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); 
      Bitmap.createScaledBitmap(thumbnail, 100, 100, true); 
      Drawable drawable = new BitmapDrawable(getResources(), thumbnail); 
      list.add(drawable); 

      GridView gv = (GridView)findViewById(R.id.GridV1); 
      gv.setAdapter(new ImageAdapter(this, list)); 

     } 
    } 
} 

最後這是我在ImageAdapter

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    ImageView imageView; 
    if (convertView == null) { 
     imageView = new ImageView(mContext); 
     imageView.setLayoutParams(new GridView.LayoutParams(130, 130)); 
     imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
     imageView.setPadding(10, 10, 10, 10); 
    } else { 
     imageView = (ImageView) convertView; 
    } 

    imageView.setImageDrawable(mThumbIds.get(position)); 
    return imageView; 
} 

我認爲這是與規模增加我的圖片,但我不知道,也無法找到解決這個問題。

回答

0

就像Sochimickox說的,y當您打開它時,我們的佈局會重新繪製。所以我有兩種方法,首先是禁用重繪。因爲我們知道你的錯誤的原因是「跨越」,其中之一應該可以幫助您:

可能是第一個將做到這一點,但我建議設計爲兩種應用風景和portait模式。爲此,您應該在名爲layout-port的資源中再創建一個文件夾。比你可以簡單地在這裏複製xml文件,從「圖形佈局」欄的頂部欄選擇portait外觀。我首先說read here。它來自Android開發者網站,剛剛開始,我也在另一個tutorial link

要明確,佈局端口是用於portait模式。如果你想爲lanscape設計,請使用layout-land。您也可以用這種方式設計不同的屏幕尺寸。像layout-sw600dp

+0

非常感謝這些教程。肯定會檢查出來,這將是非常有用的未來項目:) – Oscar

0

圖像消失了,因爲當配置更改時,佈局會重新繪製。 您可以在默認情況下你的應用程序中加入這On​​Create中設置風景模式:

this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

或設置爲肖像模式:

this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

編輯

試試這個:

@Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     newConfig.orientation = getResources().getConfiguration().orientation; 
     super.onConfigurationChanged(newConfig); 
    } 
+0

但我必須改變我的應用程序的方向。如果我只需要一個預定的方向就可以解決問題。 – Oscar

+0

更新了答案。 – Sochimickox

+0

沒有工作,但我有點解決了這個問題。除非GridView佔據整個屏幕,否則圖像將消失。在改變我的GridView以使整個屏幕上的圖像不會消失後,我仍然得到那個奇怪的錯誤,但至少現在我可以在兩個方向上顯示圖像。 – Oscar