2012-03-23 2 views
2

SeekBar 및 ScrollView가있는 사용자 정의 레이아웃이있는 활동이 있습니다. 탐색 바를 프로그래밍 방식으로 움직일 때마다 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

나는이 동일한 문제점을 가지고 있으며, 지금까지 나는 그것을 해결할 수 없었습니다.

QuickScroll이라는 ScrollView에서 Scoll을 설정하는 SeekBar onStartTrackingTouch를 설정하는 동안 몇 가지 시도를했습니다. 이 작업은 스크롤을 설정하는 측면에서 효과적 이었지만 seekBar에서 진행률이 변경 될 때마다 ScrollView는 신속하게 재설정 한 다음 설정 위치로 돌아 왔습니다. 이 (0,0)로 스크롤을 재설정 뷰 그룹 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 만 재설정됩니다. 이 문제에 대한 해결책을 찾았 으면 알려주십시오.

관련 문제