2013-09-21 43 views
3

在图库视图onItemSelected我打电话的setText该修改文本的一个TextView那主要布局的一部分:设置文本原因滚动抢购

@Override 
public void onItemSelected(EcoGalleryAdapterView<?> parent, View view, int position, long id) { 
    // --- run asyncTask to update gallery view here 
    TextView myTextView = (TextView) findViewById(R.id.myTextView); 
    myTextView.setText("position is: ": position); 
} 

如果我失去了一切,因为它是和只是删除myTextView.setText画廊按预期工作,但如果我保留它,那么当滚动画廊快速以一种丑陋的方式快速捕捉到选定的位置。可能是什么问题?

+0

你可以发布你的活动的布局xml吗?不知道这是否会有所帮助,但看看向TextView添加'android:focusable =“false”'是否有所帮助。 – Vikram

+0

当你问一个问题时,如果有人问任何问题,请尽量去那里。你能向我们展示包含R.id.myTextView的布局吗? –

回答

0

“丑”是用来描述用户界面转变一个相当主观的术语。

但是,听起来好像你选择的是一个自定义动画。在布局发生之前调用onItemSelected(),所以您可以使用此方法为您的Gallery或单个Views创建动画。

我建议您阅读Android开发者文档中的Animation and Graphics documentation,以更全面地理解动画并帮助确定您真正想要的内容。

该代码将根据您决定的样子以及您的目标Android版本而有所不同。一个简单的视图动画,将淡入所选视图可能看起来像这样:

public void onItemSelected(EcoGalleryAdapterView<?> parent, View view, 
     int position, long id) { 
    view.setAnimation(new AlphaAnimation(0, 1)); 
} 
0

setText命令位于UI线程上,也许它具有更高的优先级或来自当前Gallery动画的某些内容,它会中断它的行为,因为它应该如此。

尝试设置你的setText一个处理器中:

new Handler().post(new Runnable() { 

    @Override 
    public void run() { 
     myTextView.setText("position is: ": position); 
    } 

}); 
0
// try this 

TextView myTextView; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.image_full); 
     myTextView = (TextView) findViewById(R.id.myTextView); 
    } 
    @Override 
    public void onItemSelected(EcoGalleryAdapterView<?> parent, View view, int position, long id) { 
     // --- run asyncTask to update gallery view here 
     myTextView.setText("position is :"+ position); 
     myTextView.invalidate(); 
    }