2010-11-22 116 views
4

我有一个ListView其中每个项目有一个复杂的布局,其中包含TextViewandroid:inputType="text"android:ellipsize="marquee"。我的问题是inputType="text"确实东西呈现整个列表视图项不可点击。我已经试过:inputType使项目不可点击

  • android:descendantFocusability="blocksDescendants"在最上面的布局的项目,
  • TextView本身android:focusable="false"
  • TextView本身android:focusableInTouchMode="false"
  • TextView本身android:clickable="false"
  • android:editable="false"TextView本身。

没有工作。

我在TextView上使用android:inputType="text"的原因是它变成了单行,而android:ellipsize="marquee"实际上起作用。我已经做了功课:

  • android:singleLine已被弃用*
  • android:lines="1",如建议here,不工作,文本还是包装,只是你不会看到第二行,所以大门罩效果不会出现。

*或者是什么呢?在Eclipse中我的Ctrl +空格键说,这大约android:singleLine(重点煤矿):

约束文本到一个水平滚动的行,而不是 让它换到多行和进步,而不是集中的 插入新行时你按下回车键。 * 已弃用: 此属性已弃用,由inputType属性中的textMultiLine 标志替换。因为singeLine的默认值为false(多行 行模式),所以在更改 现有布局时请小心,但是如果您为inputType指定了任何值,则默认 是单行模式。 (如果找到singleLine和inputType属性 ,则inputType标志将覆盖值为 singleLine。)。 [布尔]

但是,the docs不说任何弃用。

这是怎么回事?

+0

我有完全相同的问题...回退是使用弃用的android:singleline,但很想看看如何在不使用它的情况下完成此操作。 – 2011-01-12 05:02:04

回答

2

实际上在the official documentation of R.attr那属性常量已弃用。

但是(如上所述)这与the TextView documentation page相矛盾。并且在查看相关方法时,设置singleLine属性相当于:

myTextView.setTransformationMethod(new SingleLineTransformationMethod()); 

这也不被弃用。而这正是我如何在弃用方面跳舞的原因。

0

不知道我是否完全理解您的需求,但是如果我在这里执行的是我用于列表项的代码(它在左侧具有图像并且在右侧具有文本,文本被限制为2行并且使用椭圆化特征):

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="?android:attr/listPreferredItemHeight" 
    android:orientation="horizontal" 
    android:gravity="center_vertical" 
    android:padding="5dip"> 

    <ImageView android:id="@+id/list_item_icon" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:paddingRight="10px" /> 

    <TextView android:id="@+id/list_item_label" 
     android:textSize="16sp" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:ellipsize="marquee" 
     android:maxLines="2" 
     android:inputType="textMultiLine" /> 

</LinearLayout> 

如果需要1个限制可能尝试使用android:maxLines="1"

+0

这看起来不起作用,字幕效果不可见(就像'lines =“1”`。另外,`inputType =“textMultiLine”`使整个项目不可点击,就像`inputType =“text” `。 – Felix 2010-11-25 20:59:43

0

只要the official, online documentation没有提及singleLine已被弃用,我不会这么认为。它必须是SDK中的一个错误。只要文档中未标记为已废弃,并且尚未完全正常使用,我将使用singleLine