搜索栏在NavigationDrawerNavigationDrawer

2023-09-06 02:45:34 作者:神明的礼物

我想用一个搜索栏在导航抽屉

I want to use a seekbar in a Navigation Drawer

基本上我需要滑动左边和右边设置了搜索栏的,那么,你猜对了,它的滑动抽屉式导航...

Basically I need to slide left and right to set the seekbar and, well, you guessed it, it slides the navigation drawer...

我想这样做的是,当它不是滑动时,它专注于搜索栏和navigationdrawer。

What I would like to do is to slide the seekbar when it's focused and the navigationdrawer when it's not.

我应该怎么办呢?

下面是我的code设置的项目(我没有设置搜索栏还)时

Here is my code when setting an item (I haven't set the seekbar yet)

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_critere.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>

在此先感谢:)

Thanks in advance :)

推荐答案

只需添加一个 onTouchListener 。当你触摸屏幕上的搜索栏(ACTION_DOWN)禁止家长拦截事件。

Just add an onTouchListener. When you touch the screen on the seekbar (action_down) disallow parent to intercept the event.

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