2010-12-17 40 views
2

這裏有一個佈局:如何激活聚焦ViewGroup中的TextView的選取框?

<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,它會自動處理正確的情況)而不擴展和覆蓋很多東西?

Regards

回答

1

好的,我找到了某種方法。我將機器人:可調焦=「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); 
} 

正是這種東西,我想避免,但現在會做。

相關問題