【问题标题】:show popup on long click on selected tab of tablayout长按选项卡布局的选定选项卡时显示弹出窗口
【发布时间】:2018-05-23 20:03:09
【问题描述】:

我正在创建一个 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);
    }
}   
}  

我希望当用户长按每个选项卡时,弹出窗口会准确地出现在所选位置。
如下图所示

我该怎么做?

【问题讨论】:

标签: android popup android-support-library


【解决方案1】:

(没有足够的积分来评论,所以发布为答案)

要在 tablayout 的每个选项卡上实现长按 clicklistener,请遵循这些答案

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

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

关于长按位置弹窗的实现,关注这个不错的博客,

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

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-27
    • 1970-01-01
    • 2018-06-08
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2018-04-15
    相关资源
    最近更新 更多