【问题标题】:Android: TextView doesn't get focusableAndroid:TextView 无法获得焦点
【发布时间】:2012-11-05 10:04:51
【问题描述】:

我无法弄清楚TextView 的一个非常愚蠢的问题!! 我有一个带有ButtonTextView 的简单布局。这是布局:

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:text="Button1" />

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/button1"
    android:focusable="true"
    android:clickable="true"
    android:text="TextView1"
    android:textAppearance="?android:attr/textAppearanceMedium"/>

当按钮有焦点并且我在模拟器中按下“向下箭头”时,TextView 没有获得焦点(它不会变成蓝色!!)为什么?请帮帮我!!

【问题讨论】:

  • 为什么要TextView 获得焦点?
  • 您想通过使TextView 成为焦点来做什么?
  • 因为该应用程序是为非触摸设备开发的,并且 TextView 必须是可点击的(但我不想使用按钮!)!!
  • @sankettt:屏幕阅读器无法找到不可聚焦的 TextView,通常是可访问性错误。

标签: android focus textview


【解决方案1】:

尽管 TextView 没有变成蓝色,但它正在获得焦点。

要查看发生的焦点/不焦点,例如,您可以在文本中定义颜色变化。这样,这些事件对用户来说是可感知的。

创建一个.xml文件并放入/res/color/ 就我而言,我将文件命名为“color_text_view.xml”。

  <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
      <item android:state_focused="true" android:color="#00FF00"/>
      <item android:color="#FF00FF"/>
    </selector>

并将android:textColor="@color/color_text_view" 添加到文本视图中。

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/button1"
android:focusable="true"
android:clickable="true"
android:text="TextView1"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@color/color_text_view"/>

希望对您有所帮助!

【讨论】:

  • 谢谢 Renato.. 你帮了我很大的忙(你刚才解释的技巧将来对我很有用).. 但是如果我想改变 TextView 的背景呢?我尝试用背景替换 textColor,但出现运行时错误。有没有办法用这个技巧做到这一点?
  • 我不确定这是否有效,但请看一下:stackoverflow.com/questions/2217753/…
  • 如果我发现别的东西,我会告诉你。
  • 好的。在您在上一条评论中链接的 SO 帖子中,有解决方案,它工作正常!!谢谢你!
【解决方案2】:

请参阅如果您想将您的文本设置为焦点,然后您的code is true。您的文字处于焦点模式,但颜色不能改变。

如果你改变颜色,那么它会直接设置,因为你已经在 XML 中设置了焦点。因此,当应用启动时,TextView 已经处于聚焦模式,因此颜色会发生变化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-16
    • 1970-01-01
    • 1970-01-01
    • 2021-10-26
    • 2015-03-29
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    相关资源
    最近更新 更多