这是一个布局:
<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的选择也是如此。我认为将duplicaParentState = true添加到first_tv就可以了,但事实并非如此。所以我的问题是:有没有一种标准的,简单的方法让TextView的选框在一个专注的ViewGroup内工作(除了ListView,它能自动正确地处理案例)而不扩展和覆盖很多东西?
此致
答案 0 :(得分:1)
@Override
protected void onFocusChanged(boolean gainFocus, int direction, Rect previouslyFocusedRect)
{
super.onFocusChanged(gainFocus, direction, previouslyFocusedRect);
setSelected(gainFocus);
dispatchSetSelected(gainFocus);
}
正是我想避免的那种东西,但现在就可以了。