我通过代码创建了一个ImageSwitcher:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:background="#FFFFFF"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Gallery
android:id="@+id/Gallery01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"></Gallery>
<ImageSwitcher
android:id="@+id/ImageSwitcher01"
android:background="@android:color/transparent"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</ImageSwitcher>
</LinearLayout>但是当我运行这个的时候,这个ImageSwitcher的背景仍然是黑色的,并不像我预期的那样透明。我该如何修复它?

发布于 2011-09-27 02:32:21
在ImageSwitcher上设置工厂时,请确保ViewFactory返回透明背景:
myImageSwitcher.setFactory(new ViewFactory() {
@Override
public View makeView() {
ImageView imageView = new ImageView(getActivity());
imageView.setBackgroundColor(0x00000000); // <--- return transparent bg
imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
imageView.setLayoutParams(new ImageSwitcher.LayoutParams( ImageSwitcher.LayoutParams.FILL_PARENT, ImageSwitcher.LayoutParams.FILL_PARENT));
return imageView;
}
});帮我修好了。
发布于 2011-06-10 21:45:53
为了解决这个问题,我使用了ViewFlipper而不是ImageSwitcher。我只想在预定义的图像之间进行动画,所以ViewFlipper对我来说是可以的。我没有尝试过,但我认为你可以使用2个图像视图,在下一个视图上设置正确的图像,然后调用viewflipper.showNext()。
编辑:最后,我不得不在我正在工作的项目中做上面写的事情,它起作用了。
在layout.xml中,您拥有:
<ViewFlipper
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:id="@+id/viewFlipper">
<ImageView
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:src="@drawable/market_product01"
android:id="@+id/imgFirst">
</ImageView>
<ImageView
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:id="@+id/imgSecond">
</ImageView>
</ViewFlipper>然后创建一个处理图像切换的类:
public class MyImageViewSwitcher {
private ViewFlipper flipper;
private ImageView[] views;
private int currentView = 0;
public MyImageViewSwitcher(ViewFlipper flipper, ImageView first, ImageView second) {
currentView = 0;
this.flipper = flipper;
views = new ImageView[2];
views[0] = first;
views[1] = second;
}
public void setImage(Drawable image) {
currentView = (currentView + 1) % 2;
views[currentView].setImageDrawable(image);
flipper.showNext();
}
}根据您的活动,您可以构建一个ImageViewSwitcher:
ViewFlipper viewFlipper = (ViewFlipper) findViewById(R.id.viewFlipper);
viewFlipper.setInAnimation(android.R.anim.fadeIn);
viewFlipper.setOutAnimation(android.R.anim.fadeOut);
ImageView imgFirst = (ImageView) findViewById(R.id.imgFirst);
ImageView imgSecond = (ImageView) findViewById(R.id.imgSecond);
this.imageSwitcher = new MyImageViewSwitcher(viewFlipper, imgFirst, imgSecond);每次您想要更改内容时,都会调用该方法:
imageSwitcher.setImage(Drawable d)发布于 2013-06-05 16:20:49
设置ImageSwitcher控件的背景色不起作用。要移除黑色背景,只需将Imageswitcher内的每个视图的背景色设置为透明即可:
_imageSwitcher.getCurrentView().setBackgroundColor(getResources().getColor(R.color.transparent));对每个_imageSwitcher.setImageResource()调用执行此操作,您的操作就完成了:)
https://stackoverflow.com/questions/5685590
复制相似问题