如何在小部件中添加垂直滚动条?

Posted

技术标签:

【中文标题】如何在小部件中添加垂直滚动条?【英文标题】:How can ı add vertical scroll bar in widget? 【发布时间】:2020-02-22 13:06:08 【问题描述】:

我是 android 的初级开发人员。我创建了小部件。我想在我的小部件中添加垂直滚动条。我该怎么做?谢谢。

我的小部件代码:

static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId) 
    int id = 0;
    if (MyNotesWidgetActivity.widgetProcess == "create") 
        id = CustomAdapter.cid;
     else
        id = CustomAdapter.uid;
    
    DataSource dataSource = new DataSource(context);
    dataSource.open();
    String content = dataSource.getNote(id);

    RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.my_notes_widget);

    views.setTextViewText(R.id.appwidget_text, content);
    appWidgetManager.updateAppWidget(appWidgetId, views);

xml 文件:

<LinearLayout
    android:orientation="vertical"
    android:layout_
    android:layout_
    android:background="@color/colorMyBlue"
    android:padding="@dimen/widget_margin"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <TextView
        android:id="@+id/appwidget_text"
        android:layout_
        android:layout_
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:layout_margin="8dp"
        android:background="@color/colorMyBlue"
        android:contentDescription="@string/appwidget_text"
        android:text="@string/add_widget"
        android:textColor="#ffffff"
        android:textSize="24sp"
        android:textStyle="bold|italic" />
</LinearLayout>

【问题讨论】:

那你有什么问题? 我正在从用户添加的笔记中获取小部件内容。太长的内容不适合小部件。并非所有内容都可见。所以我想给小部件添加一个滚动条。 【参考方案1】:

Option - 1 : 使用ScrollView 使视图可滚动

<ScrollView android:layout_
    android:layout_
    android:fillViewport="true"
    xmlns:android="http://schemas.android.com/apk/res/android" >

    <LinearLayout
        android:orientation="vertical"
        android:layout_
        android:layout_
        android:background="@color/colorMyBlue"
        android:padding="@dimen/widget_margin">
        <TextView
            android:id="@+id/appwidget_text"
            android:layout_
            android:layout_
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:layout_margin="8dp"
            android:background="@color/colorMyBlue"
            android:contentDescription="@string/appwidget_text"
            android:text="@string/add_widget"
            android:textColor="#ffffff"
            android:textSize="24sp"
            android:textStyle="bold|italic" />  
    </LinearLayout>
</ScrollView>

选项 - 2: 只需在 TextView 中的 layout.xml 中设置 scrollbars 属性即可

android:scrollbars = "vertical"

然后在您的代码中将setMovementMethod 设置为ScrollingMovementMethod

[appwidget_text].setMovementMethod(new ScrollingMovementMethod());

【讨论】:

然后尝试使用选项 2 [appwidget_text].setMovementMethod(new ScrollingMovementMethod());我如何从 RemoteView 对象到达 [appwidget_text](TextView 对象)?或者到达这个对象的方法是什么? 小部件不支持ScrollView,因此第一种解决方案根本不起作用。【参考方案2】:

我解决了这个问题 单元素列表视图结构。

希望对您的问题有所帮助。

WidgetScrollBar

【讨论】:

以上是关于如何在小部件中添加垂直滚动条?的主要内容,如果未能解决你的问题,请参考以下文章

Tkinter 小部件上的垂直和水平滚动条

如何在小部件扩展中添加超过 5 个小部件? WidgetBundle 的小部件的最大数量不能超过 5

为啥 Marquee 在小部件中不起作用?

自定义 Qt 设计器小部件:包含自定义垂直布局的滚动区域

即使在使用 SingleChildScrollView() 包装 column() 后也无法在小部件上滚动

在 Tkinter 中为一组小部件添加滚动条