我使用 ViewFlipper
控件来显示来自 left to right
的连续间隔的推文。我在ViewFlipper中为每条推文添加了动态textview。
一切都很好但有时textview重叠。
什么是这种奇怪行为的原因?
代码:
for (int i = 0; i < tweets.length(); i++) {
tweet = tweets.getJSONObject(i).getString("title")+" tweet on "+tweets.getJSONObject(i).getString("pubDate");
tv = new TextView(context);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.FILL_PARENT);
params.weight = 1.0f;
params.gravity=48;
tv.setLayoutParams(params);
tv.setGravity(Gravity.CENTER);
tv.setTextSize(22);
tv.setTextColor(ColorStateList.valueOf(Color.WHITE));
tv.setSingleLine();
//tv.setTextColor(getREs)
tv.setText(tweet);
flipper.addView(tv);
}
flipper.setInAnimation(inFromRightAnimation(1500));
flipper.setOutAnimation(outToLeftAnimation(1500));
flipper.startFlipping();
public static Animation inFromRightAnimation(int duration) {
Animation inFromRight = new TranslateAnimation(
Animation.RELATIVE_TO_PARENT, +1.0f, Animation.RELATIVE_TO_PARENT, 0.0f,
Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f
);
inFromRight.setDuration(duration);
inFromRight.setInterpolator(new AccelerateInterpolator());
return inFromRight;
}
public static Animation outToLeftAnimation(int duration) {
Animation outtoLeft = new TranslateAnimation(
Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, -1.0f,
Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f
);
outtoLeft.setDuration(duration);
outtoLeft.setInterpolator(new AccelerateInterpolator());
return outtoLeft;
}
EDIT :
这是显示上述问题的另一个快照..
答案 0 :(得分:2)
我在使用我的应用程序的某些设备上使用ViewFlipper和onFling Gesture时遇到了同样的问题。
通过在我的视图中添加背景颜色,我能够解决问题。在我的情况下,ListViews有重复的重叠文本,所以我只是在每个ListView的xml中添加了一个黑色背景,它为我解决了问题。
android:background="#000000"
这种行为看起来仍然很奇怪,我不确定为什么要修复它。也许这与透明度有关。
答案 1 :(得分:1)
我使用ViewFlipper遇到了同样的问题。我找到原因,看看错误的代码:
public void setDuration(int ms) {
mDurationTime = 1000*ms;
this.setFlipInterval(mDurationTime);//don't do this
}
就我而言,listview addHeader(ViewFlipper)
答案 2 :(得分:0)
尝试
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
使用 FILL_PARENT 代替 WRAP_CONTENT
对我有用。
答案 3 :(得分:0)
因为InAnimation和OutAnimation的持续时间比flipInterval时间短。
确保flipInterval时间长于动画时间。
帮助它。