Android ScrollView сбрасывается при перемещении SeekBar - PullRequest
2 голосов
/ 23 марта 2012

У меня есть действие, которое имеет пользовательский макет, с SeekBar и ScrollView. Всякий раз, когда я перемещаю панель поиска программным способом, представление прокрутки сбрасывается наверх (то есть вызывается onLayout), как мне установить его так, чтобы ScrollView не сбрасывался?

Ответы [ 2 ]

6 голосов
/ 03 декабря 2012

Вы не должны создавать строки (в методе getView()) снова и снова ..

@Override
    public View getView(int position, View arg1, ViewGroup parent) {
        // TODO Auto-generated method stub

           LayoutInflater inflater = getLayoutInflater();
             View row = arg1;
             if(row==null)
                {
                row = inflater.inflate(R.layout.listview_item_row, parent, false);

                }
           //  Log.d("position", ""+str[position]);
                Button b1 = (Button)row.findViewById(R.id.btn);
                 final SeekBar s1 = (SeekBar)row.findViewById(R.id.seekBar1);
                //s1.setFocusable(true);
                b1.setText(str[position]);
                   b1.setOnClickListener(new OnClickListener()
                   {
                     public void onClick(View v) {

                       Toast.makeText(getApplicationContext(), "Progress is "+s1.getProgress()+"%", Toast.LENGTH_LONG).show();

                   }

                  });  

        return row;
}
0 голосов
/ 03 мая 2012

Ну, у меня та же проблема, и до сих пор я не смог ее решить.

Я попробовал несколько вещей, например, во время SeekBar onStartTrackingTouch, установив скролл на моем ScrollView, который называется quickScroll. Это работало с точки зрения настройки прокрутки, но каждый раз, когда прогресс на панели поиска изменялся, ScrollView быстро сбрасывался и затем возвращался в заданное положение.

@Override
    public void onStartTrackingTouch(SeekBar seekBar) {

            quickScroll.post(new Runnable() {
                @Override
                public void run() {

                    //quickScroll.requestDisallowInterceptTouchEvent(true);
                    //quickScroll.setEnabled(false);
                     quickScroll.scrollTo(0, 54);
                    // quickScroll.requestDisallowInterceptTouchEvent(true);
                } 
            });


    }

Однако, помимо прочего, при вызове onLayout в моей пользовательской viewGroup он сбрасывает Scroll в (0,0). В моем текущем состоянии onLayout () вызывается при каждом нажатии кнопки, но сбрасывает ScrollView только при изменении SeekBar. Пожалуйста, дайте мне знать, если вы нашли решение этой проблемы.

...