在Gallery onItemSelected中设置文本会导致滚动捕捉

时间:2013-09-21 22:54:32

标签: android galleryview

在galleryView 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图库按预期工作,但如果我保留它,那么滚动时图库会以一种丑陋的方式快速捕捉到所选位置。可能是什么问题?

3 个答案:

答案 0 :(得分:0)

setText命令位于UI线程上,可能是它从当前的Gallery动画中获得了更高的优先级,这会破坏它的动作。

尝试在处理程序中设置setText

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

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

});

答案 1 :(得分: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();
    }

答案 2 :(得分:0)

“Ugly”是描述用户界面转换的一个非常主观的术语。

但是,当您选择某个项目时,听起来好像是您想要的自定义动画。在布局发生之前调用onItemSelected(),因此您可以根据需要为此方法设置图库或单个视图的动画。

我建议您阅读Android开发人员文档中的Animation and Graphics documentation,以更全面地了解动画并帮助确定您的实际需求。

代码会有所不同,具体取决于您决定使用的内容以及您要定位的Android版本。将淡化所选视图的简单视图动画可能如下所示:

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