使用系统主题颜色设计小部件

时间:2015-01-03 19:40:25

标签: android android-theme

我正在制作小部件,我对此感到非常沮丧。早些时候,我只是设置颜色,因为我看到它,它没关系。但现在我想使它与系统主题设置相匹配。如何实现?

我被要求发布一些代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent"
    android:padding="@dimen/widget_margin"
    android:orientation="vertical"
    style="@android:style/Theme.Holo.Light">
    <!-- pasek górny z przyciskiem dodawania -->
    <GridLayout
        android:layout_width="fill_parent"
        android:layout_height="37dp"
        android:rowCount="1"
        android:columnCount="2"
        android:id="@+id/Header"
        android:background="@android:color/holo_blue_dark">

        <ImageButton
            android:layout_width="37dp"
            android:layout_height="37dp"
            android:id="@+id/AddButton"
            android:layout_row="0"
            android:layout_column="1"
            android:contentDescription="Add" />
    </GridLayout>

    <!-- panel z wiadomościami -->
    <ListView
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:id="@+id/ListView"
        android:layout_weight="1"
        style="@android:style/Widget.Holo.ListView"
        android:background="@android:color/holo_green_light" />

    <!-- stopka widgetu -->
    <GridLayout
        android:layout_width="fill_parent"
        android:layout_height="37dp"
        android:rowCount="1"
        android:columnCount="2"
        android:layout_gravity="end"
        android:id="@+id/Footer"
        android:background="@android:color/holo_blue_dark">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:text="@string/copyright"
            android:id="@+id/textView"
            android:layout_column="1"
            android:layout_row="0"
            android:textColor="@android:color/white"
            android:layout_gravity="center_vertical" />
    </GridLayout>
</LinearLayout>

这次我希望我的小部件融入系统。因为我可以使用提供一些图标,一些颜色和图形的主题,我会使用这些颜色来匹配其他组件。有可能吗?

1 个答案:

答案 0 :(得分:0)

  • 如果您未设置任何android:colorandroid:background等,视图将继承主题中的颜色。

首先请确保您继承了满足您的主题。

<style name="MyStyle" parent="Theme.Material">

</style>
  • 关于您的小部件,如果它们的自然色调不是您想要的,那么您必须从styles.xml自定义上述主题。您可以轻松找到如何设置按钮,列表视图等样式。

以下是按钮的示例:

<style name="MyStyle" parent="Theme.Material">
<item name="android:ButtonStyle">@style/MyStyle.Buttons</item>
...
</style>

<style name="MyStyle.Buttons" parent="Widget.Material.Button">
<item name="android:background">@color/my_color</item>
...
</style>

首先,您要说所有按钮都应该来自MyStyle.Buttons。然后定义MyStyle.Buttons并添加所需的所有功能。这样所有按钮将具有相同的背景,而需要手动执行。

关于这个话题有很多问题。