Попытка заставить мои кнопки ImageButtons реагировать на событие касания. Эти ImageButtons создаются динамически и добавляются в LinearLayouts внутри HorizontalScrollView, которые настроены в ресурсе макета.Программно созданный ImageButton Inside HorizontalScrollView не получает Touch
КАК добавляю IMAGEBUTTON
ImageButton button = new ImageButton(getActivity());
button.setBackgroundResource(plugin.mIcon.mBackgroundID);
button.setImageResource(plugin.mIcon.mIconID);
button.setEnabled(plugin.isEnabled());
// need to set the layout parameters of this button.
currentLayout.addView(button);
// we have to setup the layout parameters after it has been added to its parent.
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) button.getLayoutParams();
params.width = UnitConversionUtils.dipToPixels(getActivity(), PLUGIN_BUTTON_SIDE).intValue();
params.height = UnitConversionUtils.dipToPixels(getActivity(), PLUGIN_BUTTON_SIDE).intValue();
button.setLayoutParams(params);
button.setOnClickListener(this);
MY IMAGEBUTTON ONCLICKLISTENER
Я поставил мой слушатель в двух различных способов, просто чтобы попробовать и получить его работу.
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("Fragment","ImageButton clicked");
}
});
, а также, когда я установил слушатель кнопки на это, это фрагмент, который воплощал View.OnClickListener
и имеет public void onClick(View v);
метод, реализованный.
XML РАСПОЛ РЕСУРС
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="none"
android:id="@+id/map_plugin_scroll_view"
android:background="@color/mm_map_drawer_background">
<!-- Enclosing box to layout the two groups.-->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:id="@+id/group_container">
<!-- These layouts contain the map plugins. -->
<LinearLayout
android:id="@+id/group_one"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"/>
<LinearLayout
android:id="@+id/group_two"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"/>
</LinearLayout>
</HorizontalScrollView>
я предполагаю HorizontalScrollView потребляет прикосновение, но я не уверен. Буду признателен за любую оказанную помощь.
на основе вашего кода это не похоже на то, что кнопка будет делать что-либо при нажатии (onClickListener «это», но вы не показываете этот код), а родительские представления должны распространять события касания на дочерние. – Jim
Извините @ Jim Я не включил этот код. Все, что я делаю, - это реализовать View.OnClickListener в моем фрагменте и log при вызове. Считаете ли вы, что это HorizontalScrollView, потребляющий прикосновение? – StuStirling
Нет - это, вероятно, в слушателе. Попробуйте создать отдельный объект для слушателя или отправить больше кодов/журналов, чтобы лучше объяснить проблему. – Jim