弯曲的滚动条和BoxInsetLayout

时间:2018-03-12 20:16:29

标签: android scrollbar wear-os

我创建了一个确认活动,以获得用户的批准以继续操作。我使用未弃用的 android.support.wear.widget.BoxInsetLayout 创建了活动。

不幸的是,描述变得比屏幕显示的时间长,并且按钮被切断,并且无法向下滚动。我尝试添加ScrollView和一些滚动条属性,但我无法让它工作。

查看android Wear系统中的一些确认活动,确实可以获得带有弯曲滚动条的BoxInsetLayout。

如何在弯曲模式下启用BoxInsetLayout? 我是否必须堆叠WearableRecyclerView和BoxInsetLayout?

期待您的回答。提前谢谢!

图片:

Examples for broken and scrollable BoxInsetLayout

活动布局xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.wear.widget.BoxInsetLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/dark_grey">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    app:boxedEdges="all">

    <TextView
        android:id="@+id/text_description"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="4dp"
        android:fontFamily="sans-serif-condensed"
        android:gravity="bottom|center"
        android:text=""
        android:textSize="14sp" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="4dp"
        android:layout_marginTop="4dp"
        android:fontFamily="sans-serif-condensed"
        android:gravity="bottom|center"
        android:text="@string/warning_question_colorful_ambient"
        android:textSize="16sp" />

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="4dp"
        android:layout_marginTop="4dp">

        <android.support.wearable.view.CircledImageView
            android:id="@+id/button_cancel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="start|end"
            android:src="@drawable/ic_close_24dp"
            app:circle_color="#AFAFAF"
            app:circle_radius="25dp"
            app:circle_radius_pressed="20dp" />

        <android.support.wearable.view.CircledImageView
            android:id="@+id/button_ok"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="end|bottom"
            android:src="@drawable/ic_check_24dp"
            app:circle_color="#0EB695"
            app:circle_radius="25dp"
            app:circle_radius_pressed="20dp" />
    </FrameLayout>
</LinearLayout>

</android.support.wear.widget.BoxInsetLayout>

1 个答案:

答案 0 :(得分:2)

我为我的问题找到了合适的解决方案:我取消了BoxInsetLayout。 似乎不可能使这个布局可滚动。

作为替代方案,我只使用带有LinearLayout的ScrollView作为子项。 ScrollView本身支持弯曲滚动条并支持圆形屏幕我自己计算插入并将其作为填充应用于LinearLayout。

The Solution

我写了一篇关于这个特定问题和解决方案的博文:https://www.journal.deviantdev.com/android-wear-scrollable-boxinsetlayout/

此外,我制作了一个解决方案片段并将其上传到Bitbucket:https://bitbucket.org/snippets/devdev-dev/keR67A

b = a[:]

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:id="@+id/layout_content"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        [..]
    </LinearLayout>