2013-09-21 77 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(); 
    }