2014-08-14 2 views
0

Попытка заставить мои кнопки 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 потребляет прикосновение, но я не уверен. Буду признателен за любую оказанную помощь.

+0

на основе вашего кода это не похоже на то, что кнопка будет делать что-либо при нажатии (onClickListener «это», но вы не показываете этот код), а родительские представления должны распространять события касания на дочерние. – Jim

+0

Извините @ Jim Я не включил этот код. Все, что я делаю, - это реализовать View.OnClickListener в моем фрагменте и log при вызове. Считаете ли вы, что это HorizontalScrollView, потребляющий прикосновение? – StuStirling

+0

Нет - это, вероятно, в слушателе. Попробуйте создать отдельный объект для слушателя или отправить больше кодов/журналов, чтобы лучше объяснить проблему. – Jim

ответ

1

Может быть, проблема в этой строке:

button.setEnabled(plugin.isEnabled()); 

Иногда это мелочи!

+0

Я подумал про себя: сотни раз я использовал onClickListeners, конечно, я не мог быть таким глупым ... Спасибо! – StuStirling

Смежные вопросы