2012-10-05 54 views
4

我正在尋找將expandableListView組展開放置在頂部的方法。 我試過onGroupExpand,或在performItemClick的ExpandableListView。如果它在系統啓動的時候開始它是自己的滾動,那麼列表會被過度滾動,而且組不在屏幕上。ExpandableListView onExpand始終將展開的組滾動到頂部

不好意思描述,但很難說沒有確切顯示我需要什麼。

回答

-3

我有解決這個問題的辦法。這不是溫和的,但它工作得很好。 可擴展的listView消息是它應該通過子號移動。看來,該系統認爲,孩子是與父母(組)相同的高度,所以如果你把不同大小的孩子,它會導致自動滾動列表的問題。

我的解決方案是欺騙清單,認爲它有更多的孩子。 如果我的孩子是組的兩倍,我只是返回該組有兩個孩子的信息。現在,由於它是數據構建列表,我檢查了我的數據,是否有2個孩子的數據,或者只有1個,如果我沒有第二個孩子的數據,我知道我可以將0高度視圖作爲第二個兒童。

當我不得不讓List與小組,而不是1個大孩子時,它工作得很好。

由於沒有回答我的問題,我張貼這一個,它可能會幫助某人。

+0

感謝downvoting,它不會改變,你們沒有人可以幫助,解決方案仍然按預期工作。 – Drake29a

+0

試試我上面的新解決方案。 – thecoolmacdude

1

嘗試onGroupExpand(int groupPosition)中的setSelection(groupPosition)。

+0

它只在某些情況下有效,比如我們說我的組在底部,並且它將在同一時間setSelection,並且比滾動以顯示兒童,而不是組超出屏幕。 – Drake29a

+0

@ Drake29a嗨你的問題得到解決不是嗎?在我的情況下,羣組超出了屏幕? – Rajesh

+0

這個問題已經被我的答案解決了,這被接受了。這是一個討厭的伎倆,但沒有其他解決方案。我現在無法檢查其他解決方案,因爲我無法訪問該舊代碼。 – Drake29a

5

將transcriptmode更改爲禁用。

android:transcriptmode="disabled" 

可擴展列表佈局。

+0

您可以忽略此屬性。它爲我工作沒有transcriptmode。 – Amt87

+0

它如何在沒有屬性的情況下工作? –

+0

@DennySharma你可以忽略這個屬性,因爲禁用模式是默認模式。這是從文檔: 「禁用抄本模式,這是默認值。」 請參閱此處:http://developer.android.com/reference/android/widget/AbsListView.html#attr_android:transcriptMode –

3

在適配器將這個:

public void onGroupExpanded(final int groupPosition) { 
    super.onGroupExpanded(groupPosition); 

    listView.setSelectedGroup(groupPosition); 
} 
1

我嘗試了許多解決方案,但下面的代碼適用於me.Hope這個代碼將是一些one.Implements的OnGroupExpandListener有益與onGroupExpand 使用下面的代碼

public void onGroupExpand(final int groupPosition) { 
    super.onGroupExpand(groupPosition); 

    expandableListView.post(new Runnable() { 

     @Override 
     public void run() { 
      expandableListView.setSelection(groupPosition); 
      if(expandableListView.getChildAt(groupPosition)!=null) 
      expandableListView.requestChildRectangleOnScreen(expandableListView.getChildAt(groupPosition), 
        new Rect(0, 0, expandableListView.getChildAt(groupPosition).getRight(), expandableListView.getChildAt(groupPosition).getHeight()), false); 
     } 
    }); 
}