我有一个扩展Activity的类并实现了ViewFactory。
我找到了一些教程和代码示例,展示了如何设置textSwitcher和imageSwitcher。
您必须创建两个示例:
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运行它时,我会被强制关闭。
有什么想法吗?有更好的方法吗?
谢谢,
尼尔
答案 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
,ViewFactory
makeView
方法为每个组件提供所需的View
这应该有用, 斯特凡