在Horizo​​ntalScrollView内部以编程方式创建ImageButton未接收触摸

时间:2014-08-14 14:55:02

标签: android android-layout

尝试让我的ImageButtons响应触摸事件。这些ImageButtons是动态创建的,并添加到Horizo​​ntalScrollView中的LinearLayouts中,这些都在布局资源中设置。

我如何添加图片按钮

            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 );

我的图片按钮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>

我假设Horizo​​ntalScrollView正在消耗触摸,但我不确定。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

问题就在这一行:

button.setEnabled( plugin.isEnabled() );

有时它是小事!