【问题标题】:Fixed: "Android: Detecting focus/pressed color"固定:“Android:检测焦点/按下颜色”
【发布时间】:2011-01-05 03:28:21
【问题描述】:

我正在尝试检测按钮和其他元素的焦点/按下颜色。 这是必需的,因为我正在开发新组件,并且这些组件看起来是平台的一部分很重要。 这些颜色在 android sdk 上为橙色,在 HTC SenseUI 上为绿色。 如果我能检测到该颜色,我的组件将在两个版本上都作为平台的一部分。

有人知道怎么做吗?


可以创建“选择器”,将自定义图像用于默认状态,将平台默认用于焦点/选择。

要做到这一点,请按以下步骤操作: 1)在“res/drawable”中创建带有选择器的xml文件(例如“red_button.xml”):

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

    <item android:state_pressed="true"
        android:drawable="@android:drawable/btn_default" >
    </item>

    <item android:state_focused="true"
        android:drawable="@android:drawable/btn_default" >
    </item>

    <item 
        android:drawable="@drawable/btn_default_red" >
    </item>
</selector>

2) 从文件夹 ".../android-sdk-mac/platforms/android-1.5/data/res/drawable/" 拍照 "btn_default_pressed.9.png" 并根据需要更改颜色(我需要将其更改为红色,对于这个 GIMP 就足够了)。

3) 将更改后的图片放在“res/drawable”中(例如,名称为“btn_default_red.9.png”)

4) 定义按钮:

<Button
    android:id="@+id/info_button"
    android:layout_width="wrap_content" 
    android:layout_height="37dip"
    android:layout_marginTop="1dip"
    android:background="@drawable/red_button"
    android:text="[Info]" />

就是这样。

这是结果: alt text http://img200.imageshack.us/img200/1349/custombutton.png

【问题讨论】:

    标签: android


    【解决方案1】:

    我也有这个问题。如前所述,问题在于背景不是简单的颜色,它们是可以呈现各种外观的可绘制对象。但是,我发现了一种可能会有所帮助的解决方法。如果您的自定义组件看起来像现有的,例如Button 或 ListView 条目,您可以窃取它们的背景/选择器并将其设置为自定义组件的背景。例如,在您的自定义组件构造函数中:

      setBackgroundDrawable(new Button(context).getBackground());
    

    或者对于更适合类列表组件的背景:

      setBackgroundDrawable(new ListView(context).getSelector());
    

    您可能想稍微优化该代码,但您明白了。

    【讨论】:

    • 不错的小技巧。一项看似简单的任务实际上需要数天的研究才能发现甚至解决方法。非常感谢。
    【解决方案2】:

    那些不是颜色。它们是StateListDrawable 中的几张九补丁图像。我怀疑是否会有一种可靠的方法让您确定颜色是什么,一种适用于所有设备和所有 Android 版本的方法。

    【讨论】:

      【解决方案3】:

      这几乎是:Android ListView Selector Color 的副本

      另外,为什么需要检测颜色?只需什么都不做,您的小部件就会适应平台现有的外观和感觉。

      或者,如果您正在编写自定义主题,只需让您的主题继承自 android:Theme

      【讨论】:

      • 我需要颜色,因为客户希望默认颜色(未选择或聚焦时)代表公司的 CD/CI,而选择/聚焦颜色取决于平台(Android 默认,HTC SenseUI)。
      • 听起来会很可怕,但是没关系!
      • 我添加了结果按钮的图片(链接到图片)。我不是设计师,但我认为按钮看起来可以接受。
      • 我认为图片或图片链接不再可用。
      猜你喜欢
      • 2011-09-15
      • 2014-04-16
      • 2016-07-18
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-18
      • 1970-01-01
      相关资源
      最近更新 更多