HorizontalScrollView
の中にSeekBar
があり、ハンドルをつかんで移動するのが非常に難しいです。ハンドルに正確に触れないと、HorizontalScrollView
はタッチイベントを受信して消費します。 SeekBar
の優先度を上げる方法はありますか?それで、タッチイベントの通常の「範囲」があるのでしょうか、これはちょっとしたアイデアですか?私はそれを避けるべきですか?シークバーのタッチ優先度を上げる
1
A
答えて
0
私は以下のようにして、それを「解決」:
注:ここで説明したように私のスクロールレイアウトは、ロック可能です:https://stackoverflow.com/a/5763815/1067721(少し下の私の答えにatentionを支払う、私はそのビットがすることが判明し
public class InterceptFrameLayout extends FrameLayout {
private OnTouchListener mListener;
public InterceptFrameLayout(Context context) {
super(context);
}
public InterceptFrameLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
public InterceptFrameLayout(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean onInterceptTouchEvent (MotionEvent ev) {
return onTouchEvent(ev);
}
@Override
public void setOnTouchListener (View.OnTouchListener l) {
mListener = l;
}
@Override
public boolean onTouchEvent (MotionEvent ev) {
if (mListener != null) {
return mListener.onTouch(this, ev);
} else {
return super.onTouchEvent(ev);
}
}
}
をそして、私のFragment
に、私はリスナーANを実装:私は、タッチイベントをインターセプトすることでframeLayoutで私のシークバーを包ん
)重要ですシークバーがイベントを消費してみましょうdは:ここで
volWrapper.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
mHostingScroll.setScrollable(false);
break;
}
case MotionEvent.ACTION_UP: {
mHostingScroll.setScrollable(true);
break;
}
}
return volumeBar.onTouchEvent(event);
}
});
5
は、フレームのレイアウトを拡張せずにこの問題を解決するために、他の方法です。
アイデアは、SeekBarをタッチするときにHorizontalScrollViewのタッチイベントを無効にすることです。
だから、あなたは、例えばビューを初期化するとき、あなたはこのような何かを定義することができます:あなたはViewParentクラス上のドキュメントを読むことができます詳細については
protected void onCreate(final Bundle savedInstanceState)
{
[...]
final HorizontalScrollView scrollView = (HorizontalScrollView) findViewById(R.id.vo_cw_hsv);
final SeekBar opacitySeekBar = (SeekBar) findViewById(R.id.vo_cw_seekbar);
opacitySeekBar.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(final View view, final MotionEvent event)
{
if (event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE)
scrollView.requestDisallowInterceptTouchEvent(true);
return false;
}
});
[...]
}
関連する問題
- 1. 待機ハンドルのスレッド優先度を上げる
- 2. Eclipseでテンプレート提案の優先順位を上げる方法
- 3. ERCOSek RTOSの優先度上限プロトコル?
- 4. 優先度キューで優先度を設定する方法
- 5. インラインクラス優先度
- 6. WIX MSI - 財産優先優先度
- 7. Akka俳優優先度
- 8. MySQLの優先度
- 9. アプリケーションの優先度
- 10. activemqの優先度
- 11. AsyncCallbackの優先度
- 12. 角度HTTPの優先度
- 13. ClassNotFoundExceptionシークバーの設定を優先します
- 14. 優先度キュー - バイナリヒープ
- 15. Java優先度キュー
- 16. 301リダイレクト優先度?
- 17. Python:優先度として優先度キュー
- 18. CSSクラスの優先度を上書きする方法は?
- 19. Androidのレイアウトの優先度
- 20. ADL中に関数テンプレートの優先度を下げる方法は?
- 21. SemaphoreSlim優先度を待つ
- 22. .Netのリアルタイム優先度
- 23. Eclipseのタスク優先度
- 24. PHP型キャストの優先度
- 25. NSOperationQueue操作の優先度
- 26. SQL Serverエージェントジョブの優先度
- 27. Webpackクラスの優先度
- 28. .NETアセンブリのロード優先度
- 29. INSERTクエリの優先度
- 30. mysql選択の優先度
+1この問題に対する優れたソリューションを! –
これはまさに私が欲しいWhtです – GOLDEE