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 = ""
}
}
}