繁体   English   中英

AppWidgetHostView 不能处理任何触摸/点击事件?

[英]AppWidgetHostView can't handle any touch/click events?

我是新的 stackoverflow 注册用户,但已经使用了很长时间。 切入正题:我正在创建一个 android 启动器并希望实现 appWidgets。 为了测试,我正在使用com.android.quicksearchbox小部件并将其添加到屏幕顶部。 问题是,我正在使用 AppWidgetHostView,它似乎没有注意到用户所做的任何点击或触摸事件。 谁能告诉我为什么? 这是我所有的 appWidgets 代码(在onCreate(Bundle)函数中):

    android.appwidget.AppWidgetManager appWidgetManager = android.appwidget.AppWidgetManager.getInstance(this);
    android.appwidget.AppWidgetHost appWidgetHost = new android.appwidget.AppWidgetHost(this, 0);
    android.appwidget.AppWidgetProviderInfo newAppWidgetProviderInfo = new android.appwidget.AppWidgetProviderInfo();


    int appWidgetId = appWidgetHost.allocateAppWidgetId();


    List<android.appwidget.AppWidgetProviderInfo> appWidgetInfos = new ArrayList<android.appwidget.AppWidgetProviderInfo>();
    appWidgetInfos = appWidgetManager.getInstalledProviders();

    for(int j = 0; j < appWidgetInfos.size(); j++)
    {
        if (appWidgetInfos.get(j).provider.getPackageName().equals("com.android.quicksearchbox"))
        {

            newAppWidgetProviderInfo = appWidgetInfos.get(j);
            break;
        }
     }



    android.appwidget.AppWidgetHostView hostView = appWidgetHost.createView(this, appWidgetId, newAppWidgetProviderInfo);
    hostView.setAppWidget(appWidgetId, newAppWidgetProviderInfo);


    android.widget.LinearLayout ll = (android.widget.LinearLayout) findViewById(R.id.loll);
    ll.addView(hostView, 0);

大声笑是我的线性布局。

所以有人知道我怎样才能启用事件吗? 或者,如果有另一种将应用程序小部件添加到我的启动器的方法?

谢谢你。

使用 FrameLayout 然后添加一个简单的 View 作为重叠来处理点击事件

布局:

<layout>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:id="@+id/container"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:gravity="center">


        <View
            android:id="@+id/overlap"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:clickable="true"
            android:focusable="true" />
    </FrameLayout>
</layout>

代码:

// make sure AppWidgetHostView in bottom layer
AppWidgetHostView.z = -1f
binding.container.addView(AppWidgetHostView, width,height)
binding.overlap.tag = item
binding.overlap.setOnClickListener {
                val widget = it.tag as Widget
                val intent = Intent(context, widget.getConfigActivity())
                intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widget.id.toInt())
                context.startActivity(intent)
            }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM