2013-09-21 5 views
3

В galleryView onItemSelected я называю SetText, что изменить текст для TextView вот часть основного макета:установки в галерее onItemSelected вызывает прокрутку огрызаться

@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? Не уверен, что это поможет, но посмотрите, добавляет ли 'Android: focusable =" false "в TextView любую разницу. – Vikram

+0

Когда вы задаете вопрос, постарайтесь быть там, если кто-то попросит что-нибудь. Вы можете показать нам макет, содержащий файл R.id.myTextView –

ответ

0

«Гадкий» является довольно субъективным для описания перехода пользовательского интерфейса.

Однако, кажется, что вы хотите, чтобы пользовательская анимация была выбрана при выборе элемента. onItemSelected() вызывается до того, как будет выполнен макет, поэтому вы можете анимировать свою Галерею или отдельные виды, но вы хотите в этом методе.

Я бы предложил прочитать Animation and Graphics documentation из документации разработчика Android, чтобы более полно понять анимацию и помочь решить, что вы на самом деле хотите.

Код будет зависеть от того, что вы хотите, чтобы он выглядел и какой версии Android вы планируете. Простая анимация вида, которая приведет к исчезновению выбранного вида, может выглядеть примерно так:

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

Команды setText находятся в потоке пользовательского интерфейса, возможно, он принимает более высокий приоритет или что-то из текущей анимации галереи, что нарушает ее действие.

попробуйте установить 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(); 
    }