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. ERCOSek RTOSの優先度上限プロトコル?
- 3. Eclipseでテンプレート提案の優先順位を上げる方法
- 4. WIX MSI - 財産優先優先度
- 5. Akka俳優優先度
- 6. MySQLの優先度
- 7. activemqの優先度
- 8. アプリケーションの優先度
- 9. 優先度キュー - バイナリヒープ
- 10. Java優先度キュー
- 11. ClassNotFoundExceptionシークバーの設定を優先します
- 12. CSSクラスの優先度を上書きする方法は?
- 13. Androidのレイアウトの優先度
- 14. ADL中に関数テンプレートの優先度を下げる方法は?
- 15. Eclipseのタスク優先度
- 16. NSOperationQueue操作の優先度
- 17. CSSクラスの優先度
- 18. 優先度設定のスレッド
- 19. jqueryイベントの優先度
- 20. mysql選択の優先度
- 21. .Netのリアルタイム優先度
- 22. サイトマップの優先度問題
- 23. Androidインテントフィルタの優先度
- 24. Javaの優先度キュー
- 25. Nginxサーバー名の優先度
- 26. INSERTクエリの優先度
- 27. SQL Serverエージェントジョブの優先度
- 28. .NETアセンブリのロード優先度
- 29. Azureキューメッセージの優先度
- 30. RabbitMQとメッセージの優先度
+1この問題に対する優れたソリューションを! –
これはまさに私が欲しいWhtです – GOLDEE