所选的图库默认项目位于中心

时间:2011-03-23 11:33:21

标签: android gallery

  

可能重复:
  android gallery image position problem

我在我的应用中使用了Gallery视图。现在我运行代码。图库默认选中的项目为1,位于中心,左侧为空白。 相反,我希望没有1项应该在左边并选中。 同时点击任何图库项目不应该将该项目放在中心。

我厌倦了在群体中狩猎但没有找到任何解决方案。这可能吗? 如果是,那怎么回事?

3 个答案:

答案 0 :(得分:11)

嘿,我有点像调整左边距一样绕过同样的问题:

DisplayMetrics metrics = new DisplayMetrics();
ctx.getWindowManager().getDefaultDisplay().getMetrics(metrics);

Gallery gallery = (Gallery) ctx.findViewById(R.id.gallery);

MarginLayoutParams mlp = (MarginLayoutParams) gallery.getLayoutParams();
mlp.setMargins(-(metrics.widthPixels/2), 
               mlp.topMargin, 
               mlp.rightMargin, 
               mlp.bottomMargin
);

几乎到了左边缘,但有一点松弛(半图像宽度?),我其实很喜欢;

如果你更换

-(metrics.widthPixels/2)

-(metrics.widthPixels/2 + YOUR_IMAGE_WIDTH)

它一直到屏幕的左边缘(如果此图库显示相同尺寸的图像,这是我的情况)

答案 1 :(得分:1)

Gallery没有自定义挂钩来支持在没有自定义实现的情况下执行您想要的操作。您应该看一下Gallery小部件的源代码:

Gallery.java

将此作为自定义窗口小部件的起点,完全符合您的要求。特别要注意方法setSelectionToCenterChild(),它是当前Gallery如何选择的方法的一部分。许多方法都不是私有的,所以你可以使用子类化和重写方法......但很可能你需要使用这个源并创建一个新类。

希望有帮助!

答案 2 :(得分:0)

这对我有用:

mlp.setMargins((int) -(metrics.widthPixels/2.5), mlp.topMargin, mlp.rightMargin, mlp.bottomMargin);