Android долгое нажатие на вкладку

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

myTabHost.getTabWidget().getChildAt(i).setOnLongClickListener(new OnLongClickListener() {

    @Override
    public boolean onLongClick(View v) {
        // TODO Auto-generated method stub
        return false;
    }
});

Любое решение? Правильно ли применять слушателя на TabHost в моем случае?

3 ответа

Решение

Я решил свою проблему, добавив к представлению вкладки информацию тега, а затем прикрепил к представлению прослушиватель, который получает и печатает этот тег:

View tabView= mTabHost.getTabWidget().getChildAt(i);
// set the tag information at the view of the tab (the tag contains the position number of the tab)
tabView.setTag( Integer.valueOf(i));
tabView.setOnLongClickListener(new OnLongClickListener() {

            @Override
            public boolean onLongClick(View v) {
                // TODO Auto-generated method stub
                // I print the number position of the tab
                Log.d("tab number", ((Integer)view.getTag()).toString() );
                return false;
            }
        });

Идентификатор вкладки, по которой долго нажимали, находится в View v параметр onLongClick функция. Вызов v.getId() а остальные детали

      val tabCount = binding.tabLayout.tabCount
for (index in 0 until tabCount) {
   binding.tabLayout.getTabAt(index)?.apply {
   view.isLongClickable = false
   if (Build.VERSION.SDK_INT > Build.VERSION_CODES.O) {
         view.tooltipText = ""
      }
   }
}
Другие вопросы по тегам