首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使Android ImageSwitcher背景透明

无法使Android ImageSwitcher背景透明
EN

Stack Overflow用户
提问于 2011-04-16 17:35:14
回答 3查看 1.8K关注 0票数 1

我通过代码创建了一个ImageSwitcher:

代码语言:javascript
复制
<?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的背景仍然是黑色的,并不像我预期的那样透明。我该如何修复它?

EN

回答 3

Stack Overflow用户

发布于 2011-09-27 02:32:21

在ImageSwitcher上设置工厂时,请确保ViewFactory返回透明背景:

代码语言:javascript
复制
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;
    }
});

帮我修好了。

票数 2
EN

Stack Overflow用户

发布于 2011-06-10 21:45:53

为了解决这个问题,我使用了ViewFlipper而不是ImageSwitcher。我只想在预定义的图像之间进行动画,所以ViewFlipper对我来说是可以的。我没有尝试过,但我认为你可以使用2个图像视图,在下一个视图上设置正确的图像,然后调用viewflipper.showNext()。

编辑:最后,我不得不在我正在工作的项目中做上面写的事情,它起作用了。

在layout.xml中,您拥有:

代码语言:javascript
复制
<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>

然后创建一个处理图像切换的类:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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);

每次您想要更改内容时,都会调用该方法:

代码语言:javascript
复制
imageSwitcher.setImage(Drawable d)
票数 1
EN

Stack Overflow用户

发布于 2013-06-05 16:20:49

设置ImageSwitcher控件的背景色不起作用。要移除黑色背景,只需将Imageswitcher内的每个视图的背景色设置为透明即可:

代码语言:javascript
复制
_imageSwitcher.getCurrentView().setBackgroundColor(getResources().getColor(R.color.transparent));

对每个_imageSwitcher.setImageResource()调用执行此操作,您的操作就完成了:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5685590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档