android - NavigationDrawer 中的 SeekBar

标签 android seekbar navigation-drawer

我想在抽屉导航中使用搜索栏

基本上我需要左右滑动来设置搜索栏,你猜对了,它会滑动抽屉导航......

我想要做的是在焦点集中时滑动搜索栏,在没有焦点时滑动抽屉导航。

我该怎么做?

这是我设置项目时的代码(我还没有设置搜索栏)

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);

    View mViewElement = inflater.inflate(R.layout.item_critere, null);
    ((TextView)mViewElement.findViewById(R.id.critere_title)).setText("Prix Maximum");

    mLinearLayout.addView(mViewElement);

    return mView;
}

这是带有搜索栏的 item_critre.xml:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/critere_item"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:stretchColumns="*">

    <TableRow
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">

        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:text="Large Text"
                android:id="@+id/critere_title"
                android:layout_gravity="left|center_vertical"
                android:layout_column="0"/>

        <SeekBar
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/critere_qualifier"
                android:layout_column="1"
                android:layout_span="4"/>
    </TableRow>

    <TableRow
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">

        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceSmall"
                android:text="Medium Text"
                android:id="@+id/critere_value"
                android:layout_span="4"/>
    </TableRow>

</TableLayout>

提前致谢:)

最佳答案

只需添加一个 onTouchListener。当您在搜索栏(action_down)上触摸屏幕时,不允许父级拦截事件。

seekbar.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;
    }
});

关于android - NavigationDrawer 中的 SeekBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18400910/

相关文章:

android - 渴望在 Kotlin 中初始化对象?

android - 在 Android 后台运行应用程序或方法,即使应用程序关闭

java - 我如何修复我的进度并寻找适用于所有媒体的 slider ?

java - 如何将本地 HTML 页面与抽屉导航中的字符串链接起来?

android - 无法上传 targetSdkVersion 为 30 的签名 apk

java - 从其他 Activity/布局获取路径的问题

android - 在不丢失 SeekBar 焦点的情况下更新 ListView 行

深度导航中的 Android 抽屉导航

Android,滑动面板布局与抽屉导航