这是布局:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    <RelativeLayout
        android:id="@+id/first_tv_container"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:focusable="true"
        android:background="@android:drawable/list_selector_background">
        <TextView
            android:id="@+id/first_tv"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
            android:singleLine="true"
            android:ellipsize="marquee"
            android:duplicateParentState="true"/>
    </RelativeLayout>
    <TextView
        android:id="@+id/second_tv"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
        android:singleLine="true"
        android:ellipsize="marquee"
        android:focusable="true"
        android:background="@android:drawable/list_selector_background"/>
</LinearLayout>


当second_tv获得焦点时,second_tv的选框将按预期方式激活。当first_tv_container成为焦点时,我也希望first_tv的标志也是如此。我以为在first_tv中添加duplicaParentState = true可以达到目的,但事实并非如此。所以我的问题是:是否有一种标准,简单的方法来使TextView选框在一个聚焦的ViewGroup(而不是ListView,它可以自动正确处理情况)中工作而不扩展和覆盖很多东西?

问候

最佳答案

好的,我找到了某种方法。我将android:focusable =“ true”添加到first_tv,并实例化了first_tv_container作为RelativeLayout的扩展版本,在其中我声明了DescendantFocusability =“ blocksDescendants”,并定义了以下覆盖:

@Override
protected void onFocusChanged(boolean gainFocus, int direction, Rect previouslyFocusedRect)
{
    super.onFocusChanged(gainFocus, direction, previouslyFocusedRect);

    setSelected(gainFocus);
    dispatchSetSelected(gainFocus);
}


正是我想避免的那种东西,但是现在就可以了。

关于android - 如何在聚焦的ViewGroup中激活TextView的选取框?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4474178/

10-12 05:10