2012-03-23 17 views
2

私はSeekBarとScrollViewを使用してカスタムレイアウトを持つアクティビティを持っています。 seekbarをプログラムで動かすたびに、scrollViewが一番上にリセットされ(onLayoutが呼び出されることを意味する)、ScrollViewがリセットされないように設定するにはどうすればよいですか?SeekBarの移動時にAndroid ScrollViewがリセットされます

答えて

6

あなたは...何度も何度も(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

私はこの同じ問題を抱えており、それまでは解決できませんでした。

SeekBar onStartTrackingTouchのように、私のScrollViewのscollをquickScrollというように設定してみました。これはスクロールの設定の面で機能しましたが、seekBarの進捗状況が変わるたびにScrollViewはすぐにリセットして設定された位置に戻ります。あなたはそれが(0,0)へスクロールリセットのViewGroup onLayoutは私のカスタムに呼び出されたときに、しかし、見ることができるなど、多くの他のもののうち、

@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()がすべてのボタンを押すと呼び出されますが、SeekBarが変更されたときにのみScrollViewをリセットします。あなたがこれに対する解決策を見つけた場合はお知らせください。

関連する問題