2013-08-23 4 views
0

Я использую SeekBar в LinearLayout в ScroolView в NavigationDrawerпрокрутки, даже если SeekBar прикосновении

NavigationDrawer> ScrollView> LinearLayout> SeekBar + другие вещи

Когда я касаюсь Я не могу прокручивать вверх и вниз, и я бы хотел.

Вот моя функция, которая позволяет мне скользить SeekBar вместо слайд панель навигации

private View onCritereView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    View mView = inflater.inflate(R.layout.fragment_critere, container, false); 
    LinearLayout mLinearLayout = (LinearLayout) mView.findViewById(R.id.critere_linearlayout); 

    int i; 
    for (i = 0; i < mTitles.length; i++) { 
     View mViewElement = inflater.inflate(R.layout.item_critere, null); 
     ((TextView) mViewElement.findViewById(R.id.critere_title)).setText(mTitles[i]); 
     SeekBar mSeekBar = (SeekBar) mViewElement.findViewById(R.id.critere_qualifier); 
     mSeekBar.setOnTouchListener(new ListView.OnTouchListener() 
     { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) 
      { 
       int action = event.getAction(); 
       switch (action) 
       { 
        case MotionEvent.ACTION_DOWN: 
         // Disallow Drawer to intercept touch events. 
         v.getParent().requestDisallowInterceptTouchEvent(true); 
         break; 

        case MotionEvent.ACTION_UP: 
         // Allow Drawer to intercept touch events. 
         v.getParent().requestDisallowInterceptTouchEvent(false); 
         break; 
       } 

       // Handle seekbar touch events. 
       v.onTouchEvent(event); 
       return true; 
      } 
     }); 
     mLinearLayout.addView(mViewElement); 
    } 
    return mView; 
} 

Теперь то, что мне нужно:

Если коснуться SeekBar и если вы слайд hozizontaly использования SeekBar.

еще, если вы касаетесь SeekBar и если вы скользите verticaly использовать Scrollview

Как я могу это сделать?

Заранее спасибо :)

ответ

0

Вот рабочая реализация VerticalSeekBar:

package android.widget; 

import android.content.Context; 
import android.graphics.Canvas; 
import android.util.AttributeSet; 
import android.view.MotionEvent; 

public class VerticalSeekBar extends SeekBar { 

    public VerticalSeekBar(Context context) { 
     super(context); 
    } 

    public VerticalSeekBar(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
    } 

    public VerticalSeekBar(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    protected void onSizeChanged(int w, int h, int oldw, int oldh) { 
     super.onSizeChanged(h, w, oldh, oldw); 
    } 

    @Override 
    protected synchronized void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     super.onMeasure(heightMeasureSpec, widthMeasureSpec); 
     setMeasuredDimension(getMeasuredHeight(), getMeasuredWidth()); 
    } 

    protected void onDraw(Canvas c) { 
     c.rotate(-90); 
     c.translate(-getHeight(), 0); 

     super.onDraw(c); 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     if (!isEnabled()) { 
      return false; 
     } 

     switch (event.getAction()) { 
      case MotionEvent.ACTION_DOWN: 
      case MotionEvent.ACTION_MOVE: 
      case MotionEvent.ACTION_UP: 
       setProgress(getMax() - (int) (getMax() * event.getY()/getHeight())); 
       onSizeChanged(getWidth(), getHeight(), 0, 0); 
       break; 

      case MotionEvent.ACTION_CANCEL: 
       break; 
     } 
     return true; 
    } 
} 

Чтобы осуществить это, создайте новый класс в проекте, выбирая правильный пакет:

Там, вставьте код и сохраните его. Теперь используйте его в своем XML-макете:

<android.widget.VerticalSeekBar 
    android:id="@+id/seekBar1" 
    android:layout_width="wrap_content" 
    android:layout_height="200dp" 
    /> 
+0

Мне нужен горизонтальный брелок. Мне нужно прокручивать, даже если я касаюсь кнопки поиска – nsvir

 Смежные вопросы

  • Нет связанных вопросов^_^