我想要做的是填充一個listView與views /元素,可能是一個textview/imageview。潛在地,這些文本瀏覽是可擴展的。如果textview被展開,我想讓listview調整大小幷包裝內容。在Android中查看時調整ListView元素的大小?
已經有幾種解決方案: 1.使ListView元素不可見,以便ListView中的視圖已經達到所需的大小。在這種情況下,使用原始長字符串創建文本視圖,然後摺疊它。 2.調整適配器中的元素,然後調用notifyDataSetChanged();
但是我正在尋找一種解決方案,即使ListView中的視圖可見,它也會自動調整大小。我嘗試過使用解決方案#2,雖然它適用於更改視圖內部的值(如字符串),但它不會調整視圖的大小,除非視圖滾動屏幕然後返回到視圖中。
我的代碼的相關部分如下:
holder.text.setTrim(!holder.text.getTrim());
holder.text.setText();
holder.text.requestFocusFromTouch();
notifyDataSetChanged();
holder.text.invalidate();
vi.invalidate();
vi.requestLayout();
我把這樣的一個OnClickListener內的適配器的getView函數中。
任何人有任何解決方案?
PS。有沒有人嘗試過使用多個適配器的方法?這對我來說似乎不太好,因爲我有可能有數百個元素。
編輯: 所以我想出了一個愚蠢的解決方案的一部分,是絕對荒謬的。這種行爲毫無意義。下面(primaryTextView是相同的文字作爲上述如。holder.primaryTextView == holder.text)
holder.primaryTextView.setTrim(!holder.primaryTextView.getTrim());
if(!holder.primaryTextView.getTrim()){
holder.primaryTextView.setVisibility(View.GONE);
}
else{
holder.primaryTextView.setVisibility(View.VISIBLE);
}
notifyDataSetChanged();
vi.invalidate();
這可以讓你在觀看它展開視圖,但不會讓你縮小視圖一旦文本崩潰了。此外,View.GONE和View.VISIBLE不可互換。最後,在View.GONE被觸發的情況下,textView甚至不會消失。也許這可能是一個線索?
我正在使用'match_parent',父母有'wrap_content'。導致同樣的問題。 – JeffRegan