Android 你能把文本切换器和图像切换器放在同一个类中吗?

Android 你能把文本切换器和图像切换器放在同一个类中吗?,android,Android,我有一个扩展活动并实现ViewFactory的类 我找到了一些教程和代码示例,说明了如何设置和 对于这两个示例,您必须创建: public View makeView() { return x; } 其中x是textView或ImageView 以下是我尝试使用的示例: @Override public View makeView() { ImageView iView = new ImageView(this); iView.setScaleType(ImageView

我有一个扩展活动并实现ViewFactory的类

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

对于这两个示例,您必须创建:

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运行它时,会得到一个强制关闭

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

谢谢,


Neil

不能将同一对象用作
视图工厂
,并将其用作两个不同组件的两个不同工厂

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

  • 在活动中创建两个内部类
  • 它们都将实现
    ViewFactory
  • 将每个内部类的一个实例指定为两个组件的
    ViewFactory
  • 让他们的
    makeView
    方法为每个组件提供所需的
    View
这应该行得通,
Stéphane

不能将同一对象用作
视图工厂
,并将其用作两个不同组件的两个不同工厂

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

  • 在活动中创建两个内部类
  • 它们都将实现
    ViewFactory
  • 将每个内部类的一个实例指定为两个组件的
    ViewFactory
  • 让他们的
    makeView
    方法为每个组件提供所需的
    View
这应该行得通,
Stéphane

正如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(此)mSwitcher.setFactory(新的TextSwitcherFactory())

e、 g


正如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(此)mSwitcher.setFactory(新的TextSwitcherFactory())

e、 g


谢谢这正是我想要的。谢谢!这正是我想要的。