你有同一个班级的textSwitcher和imageSwitcher吗?

时间:2011-06-30 02:51:38

标签: android

我有一个扩展Activity的类并实现了ViewFactory。

我找到了一些教程和代码示例,展示了如何设置textSwitcherimageSwitcher

您必须创建两个示例:

public View makeView() {

return x;
}  

其中x是textView或ImageView。

以下是我尝试使用的示例:

@Override
public View makeView() {
    ImageView iView = new ImageView(this);
    iView.setScaleType(ImageView.ScaleType.FIT_CENTER);
    iView.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
    iView.setBackgroundColor(0xFFFFFFFF);

    TextView t = new TextView(this);
    t.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL);
    t.setTextSize(36);

    return iView;
}

我只能返回其中一个视图,所以当我尝试使用调用的textSwitcher运行它时,我会被强制关闭。

有什么想法吗?有更好的方法吗?

谢谢,

尼尔

2 个答案:

答案 0 :(得分:1)

正如Stéphane在我之前所说,创建一个实现ViewFactory

的内部类
public class TextSwitcherFactory implements ViewFactory
{
    @Override
    public View makeView() {
        TextView t = new TextView(Latest.this);
        t.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL);
        t.setTextSize(36);
        return t;
    }
}

然后从xml调用TextSwitcher并设置工厂而不是mSwitcher.setFactory(this);时,请使用mSwitcher.setFactory(new TextSwitcherFactory());

e.g。

mSwitcher = (TextSwitcher) findViewById(R.id.textSwitcher1);
mSwitcher.setFactory(new TextSwitcherFactory());

答案 1 :(得分:0)

您不能使用与ViewFactory相同的对象,并将其用作两个不同组件的两个不同工厂。

我从未尝试过,但从OO的角度来看,这是一个解决方案:

  • 在您的活动中创建两个内部类
  • 他们都将实施ViewFactory
  • 将每个内部类的实例指定为2个组件的ViewFactory
  • 让他们的makeView方法为每个组件提供所需的View

这应该有用,  斯特凡