Android:更改TextView或Button颜色的强度

时间:2014-08-12 12:27:04

标签: android colors android-xml

在我的应用程序中,我有各种颜色的TextViews / Buttons。问题是它们在屏幕上太亮/太强烈。

是否有一项功能可以降低它们在屏幕上的亮度/强度?

屏幕截图:

enter image description here

XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
     android:background="#e4fbff" >

    <TextView
        android:id="@+id/tvSearchHome"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:text=" "
        android:textSize="15dp" />

    <Button
        android:id="@+id/btnSearchHomeDate"
        android:layout_width="270dp"
        android:layout_height="60dp"
        android:layout_gravity="center"
        android:background="@drawable/circle4"
        android:shadowColor="#A8A8A8"
        android:shadowDx="0"
        android:shadowDy="0"
        android:shadowRadius="5"
        android:text="Date"
        android:textSize="30sp" />

    <Button
        android:id="@+id/btnSearchHomeGame"
        android:layout_width="270dp"
        android:layout_height="60dp"
        android:layout_gravity="center"
        android:layout_marginTop="4dp"
        android:background="@drawable/circle"
        android:shadowColor="#A8A8A8"
        android:shadowDx="0"
        android:shadowDy="0"
        android:shadowRadius="5"
        android:text="Game"
        android:textSize="30sp" />

    <Button
        android:id="@+id/btnSearchHomeMedValues"
        android:layout_width="270dp"
        android:layout_height="60dp"
        android:layout_gravity="center"
        android:layout_marginTop="4dp"
        android:background="@drawable/circle3"
        android:shadowColor="#A8A8A8"
        android:shadowDx="0"
        android:shadowDy="0"
        android:shadowRadius="5"
        android:text="Meditation Values"
        android:textSize="30sp" />

    <Button
        android:id="@+id/btnSearchHomeAttValues"
        android:layout_width="270dp"
        android:layout_height="60dp"
        android:layout_gravity="center"
        android:layout_marginTop="4dp"
        android:background="@drawable/circle2"
        android:shadowColor="#A8A8A8"
        android:shadowDx="0"
        android:shadowDy="0"
        android:shadowRadius="5"
        android:text="Attention Values"
        android:textSize="30sp" />

    <Button
        android:id="@+id/btnSearchHomeScore"
        android:layout_width="270dp"
        android:layout_height="60dp"
        android:layout_gravity="center"
        android:layout_marginTop="4dp"
        android:background="@drawable/circle4"
        android:shadowColor="#A8A8A8"
        android:shadowDx="0"
        android:shadowDy="0"
        android:shadowRadius="5"
        android:text="Score"
        android:textSize="30sp" />

</LinearLayout>

按钮引用的圆形XML可绘制示例:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <solid android:color="#0e84de" />

    <stroke
        android:width="1dp"
        android:color="#4a6176" />

    <padding
        android:left="10dp"
        android:right="10dp"
         />

    <corners android:radius="8dp" />

</shape>

2 个答案:

答案 0 :(得分:0)

为什么不制作可画的小透明物。

    <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <solid android:color="#330e84de" />

    <stroke
        android:width="1dp"
        android:color="#4a6176" />

    <padding
        android:left="10dp"
        android:right="10dp"
         />

    <corners android:radius="8dp" />

</shape>

以此为背景。我用的是透明色。所以#0e84de变为#330e84de。

答案 1 :(得分:0)

如果您不想/不想在Drawable中更改颜色的值,则必须在运行时更改它。

检索颜色的RGB值,将其转换为HSV并降低饱和度,转换回RGB并将新颜色应用于Drawable。 (参见维基百科的转换公式)

当你可以简单地改变Drawable中的颜色属性时,有点矫枉过正。