无法向viewwitcher添加2个以上的视图

时间:2014-09-03 22:15:04

标签: android view textview switch-statement

在Asyntask中,我想更改textwitcher文本,如果我添加新视图,应用程序崩溃。 代码示例:

                textSwitcher.setInAnimation(MainActivity.this,android.R.anim.slide_in_left);
            textSwitcher.setOutAnimation(MainActivity.this, android.R.anim.slide_out_right);
            TextView tv=new TextView(MainActivity.this);
            tv.setGravity(Gravity.CENTER | Gravity.LEFT);
            tv.setTypeface(custom_font);
            tv.setTextColor(Color.parseColor("#00285E"));
            textSwitcher.addView(tv);
在我决定删除所有视图后,

最后一行出错,我添加了textSwitcher.removeAllViews();,然后它给出了空指针。您如何看待修复?

2 个答案:

答案 0 :(得分:0)

ViewSwitcher只能有两个孩子,正如该课程的documentation所说的那样。我个人还没有看到有人使用ViewSwitcher,它是一个老类,无论如何你现在可以用ObjectAnimators获得相同或更好的效果。

您可以创建自己的ViewGroup,让您可以切换任何其他视图。如果是我,我只会扩展FrameLayout并简单地添加如下内容:

public void switchView(View view) {
    // add the new view and reveal
    view.setAlpha(0);
    addView(view);
    view.animate().alpha(1f).start();

    if (getChildCount() > 0) {
        // simultaneously remove the previous view
        final View child = getChildAt(0);
        child.animate().alpha(0).setListener(new AnimatorListenerAdapter() {
            @Override
            public void onAnimationEnd(Animator animator) {
                // remove the child when the animation ends
                removeView(child);
            }
        }).start();
    }
}

答案 1 :(得分:0)

这完全是任意行为。您可以覆盖类似于ViewAnimator类的ViewSwitcher,并用可变子视图计数替换0/1处理。真的很容易!