2012-04-16 71 views
0

我在我的项目中使用全屏画廊并使用图库我正在使用图库支持的基本适配器 现在我必须让图库禁用/停止图库滚动,直到弹出窗口显示在按钮上点击 任何人都可以帮我解决这个问题吗?禁用图库直到弹出显示

- >下面是使用底座适配器进行画廊而不是扩展画廊的片段。

public class SubItemSelectedImageAdapter extends BaseAdapter { 

    int mGalleryItemBackground; 
    private Context mContext; 
    private String[] mImageIds; 
    ImageView[] mImages; 

    public SubItemSelectedImageAdapter(Context c, String[] mImageIds2) { 

     mImageIds = mImageIds2; 
     mImages = new ImageView[mImageIds.length]; 
     mContext = c; 
     TypedArray attr = mContext 
       .obtainStyledAttributes(R.styleable.HelloGallery); 
     attr.recycle(); 
    } 

    public int getCount() { 
     return mImageIds.length; 
    } 

    public Object getItem(int position) { 
     return position; 
    } 

    public long getItemId(int position) { 


     return position; 
    } 


    public View getView(int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 

     ImageView imageView = new ImageView(mContext); 

     imageView.setImageURI(Uri.fromFile(new File(mImageIds[position]))); 
     imageView.setLayoutParams(new Gallery.LayoutParams(
       LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); 
     imageView.setScaleType(ImageView.ScaleType.FIT_XY); 

     return imageView; 
    } 
} 

public void afterTextChanged(Editable s) { 
    // TODO Auto-generated method stub 

} 

public void beforeTextChanged(CharSequence s, int start, int count, 
     int after) { 
    // TODO Auto-generated method stub 

} 

public void onTextChanged(CharSequence s, int start, int before, int count) { 
    // TODO Auto-generated method stub 

} 

}

和delaring库对象和XML refrence它...

// full screen gallery implementation. 
    ImageAdapter = new SubItemSelectedImageAdapter(this, data); 
    Gallery gallery = (Gallery) findViewById(R.id.gallery); 

    gallery.setAdapter(ImageAdapter); 
+0

哎使用setOnTouchListener(本)和实施方法,每当触摸出现在视图处理它通过回归ontouch FLASE ..might解决您的问题或其他方式,你可以去是延伸画廊和重写onFling方法和使用android:onscroll =“false”将解决您的问题,让我知道 – 2012-04-16 10:49:38

+0

我不能扩展画廊,所以如果我去你的第一个答案来实现setontouchlistner(这)我如何设置画廊滚动禁用当弹出显示 – unkown 2012-04-16 10:57:13

+0

嘿为什么不能扩展画廊或改为使用onfling方法,并让你的代码等待,直到你已经显示弹出...像一个静态布尔popupStatus = false; “\ n”while(!popupstatus){}因为你必须扩展库,我认为.... – 2012-04-16 11:07:47

回答

1
use setOnTouchListener() of gallery as below and use flag for the enable disable process 
- on popup being display make flag false and when there is no popup being displayed make flag false. 
- code is as below: 
gallery.setOnTouchListener(new OnTouchListener() 
{ public boolean onTouch(View v, MotionEvent event) 
{ // TODO Auto-generated method stub 
if(flag==true){ return false; 
}else{ 
return true; 
} 
} 
}); 
0

在您的按钮单击事件中,你可以通过下面的代码禁用画廊。

gallery.setEnabled(false); 

这将使它不可点击,也不能滚动。 当你完成你的popup make是启用。

gallery.setEnabled(true); 
+0

这不工作我试过了:( – unkown 2012-04-16 11:00:20