在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();
,然后它给出了空指针。您如何看待修复?
答案 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处理。真的很容易!