показывать всплывающее окно при длительном нажатии на выбранную вкладку табуляции - PullRequest
0 голосов
/ 23 мая 2018

Я создаю приложение для Android, и у меня есть активность с android.support.design.widget.TabLayout и ViewPager в нем.

вот мой код

activity_main.xml

<android.support.percent.PercentRelativeLayout 
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<android.support.design.widget.TabLayout
    android:id="@+id/tabs"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:tabMode="scrollable" />


<android.support.v4.view.ViewPager
    android:id="@+id/cards_grouping_pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@id/tabs" />

MainActivity.java

public class MainActivity extends AppCompatActivity {

@BindView(R.id.tabs)
TabLayout tabs;
@BindView(R.id.cards_grouping_pager)
ViewPager pager;

private ArrayList<Category> categories = new ArrayList<>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.my_cards);
    ButterKnife.bind(this);

    categories = //getDataFromApi
    doSomeWorks();
}

private void doSomeWorks() {
    MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager(), categories);
    pager.setAdapter(adapter);
    tabs.setupWithViewPager(pager);

    LinearLayout tabStrip = (LinearLayout) tabs.getChildAt(0);
    for (int i = 0; i < tabStrip.getChildCount(); i++) {
        final int finalI = i;
        tabStrip.getChildAt(i).setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {

                //I SHOULD SHOW POPUP HERE

            }
        });
    }
}


public class MyPagerAdapter extends FragmentPagerAdapter {

    private final ArrayList<String> TITLES = new ArrayList<>();

    MyPagerAdapter(FragmentManager fm, ArrayList<Category> categories) {
        super(fm);
        for (int i = 0; i < categories.size(); i++) {
            TITLES.add(categories.get(i).name);
        }
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return TITLES.get(position);
    }

    @Override
    public int getCount() {
        return TITLES.size();
    }

    @Override
    public Fragment getItem(int position) {
        DisplayMetrics displayMetrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
        return HorizontalTabsAdapter.newInstance(position, categories, displayMetrics.widthPixels,
                displayMetrics.heightPixels);
    }
}   
}  

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

picture

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

1 Ответ

0 голосов
/ 24 мая 2018

(недостаточно кредитов, чтобы комментировать, поэтому публикуйте как ответ)

Чтобы внедрить длинный список щелчков на каждой вкладке табуляции, следуйте этим ответам

https://stackoverflow.com/a/43522131/6387236

https://stackoverflow.com/a/34982710/6387236

Для реализации всплывающего окна в месте длительного нажатия, следуйте этому красивому блогу,

https://rajeshandroiddeveloper.blogspot.in/2013/07/android-popupwindow-example-in-listview.html

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...