AppWidget中的旋转文本

问题描述 投票:0回答:2

我有一个App Widget的布局,该布局具有3x3旋转的TextViews网格:

<LinearLayout
    style="@style/WidgetButtonLayout"
    android:id="@+id/widget_buttons_text_port" >

    <LinearLayout style="@style/WidgetButtonRow">
        <TextView
            style="@style/WidgetButton.Text"
            android:rotation="-90"
            android:id="@+id/upperLeft_text_port" />
        <TextView
            style="@style/WidgetButton.Text"
            android:rotation="-90"
            android:id="@+id/upperMiddle_text_port" />
        <TextView
            style="@style/WidgetButton.Text"
            android:rotation="-90"
            android:id="@+id/upperRight_text_port" />
    </LinearLayout>

    <LinearLayout style="@style/WidgetButtonRow">
        <TextView
            style="@style/WidgetButton.Text"
            android:rotation="-90"
            android:id="@+id/middleLeft_text_port" />
        <TextView
            style="@style/WidgetButton.Text"
            android:rotation="-90"
            android:id="@+id/middleMiddle_text_port" />
        <TextView
            style="@style/WidgetButton.Text"
            android:rotation="-90"
            android:id="@+id/middleRight_text_port" />
    </LinearLayout>

    <LinearLayout style="@style/WidgetButtonRow">
        <TextView
            style="@style/WidgetButton.Text"
            android:rotation="-90"
            android:id="@+id/lowerLeft_text_port" />
        <TextView
            style="@style/WidgetButton.Text"
            android:rotation="-90"
            android:id="@+id/lowerMiddle_text_port" />
        <TextView
            style="@style/WidgetButton.Text"
            android:rotation="-90"
            android:id="@+id/lowerRight_text_port" />
    </LinearLayout>

</LinearLayout>

样式在哪里:

<style name="WidgetButtonLayout">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">match_parent</item>
    <item name="android:orientation">vertical</item>
    <item name="android:weightSum">3</item>
</style>

<style name="WidgetButtonRow">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:orientation">horizontal</item>
    <item name="android:layout_weight">1</item>
    <item name="android:weightSum">3</item>
</style>

<style name="WidgetButton">
    <item name="android:layout_weight">1</item>
    <item name="android:layout_width">0dp</item>
    <item name="android:layout_height">match_parent</item>
    <item name="android:layout_margin">1dp</item>
    <item name="android:gravity">center</item>
</style>

<style name="WidgetButton.Text">
    <item name="android:textSize">15sp</item>
    <item name="android:text">@string/button_settings</item>
    <item name="android:textColor">@color/widgetButtonText</item>
    <item name="android:background">@color/transparent</item>
</style>

效果很好,只是每个网格框中的文本都是根据未旋转的宽度而不是旋转的宽度进行换行,因此在没有空间的情况下可以对文本进行换行。例如,参见下面的小部件中左上角的网格框:

enter image description here

任何想法如何解决此问题?我确实考虑过只使用固定且超出需求的TextView,但是这里的问题是TextView是根据网格布局动态调整大小的。]

编辑注意,由于这是在App Widget的上下文中设置的,因此此布局用于RemoteView,并且我不能使用setRotation()在TextView上以编程方式设置旋转角度(请参见here),其他类似选项也是如此有限。

我有一个具有3x3旋转TextViews网格的应用程序小部件的布局: <...>

android textview android-appwidget
2个回答
1
投票

如果不是特定的AppWidget情况,我建议您使用自定义视图,例如this答案提示。

虽然是Widget,所以我们不能使用自定义视图。我们可以使用肮脏的技巧。


0
投票

为了解决您的问题,您可以定义一个自定义Textview类,如下所示。

© www.soinside.com 2019 - 2024. All rights reserved.