2014-03-07 60 views
1

我想在ListView item中動態創建多個TextView。假設我使用LinearLayout它會創建水平或垂直的textview。我想要多個textview與包裝。我如何創建這樣的請分享您的寶貴意見,動態顯示多個文本的Android listview項目?

下面的屏幕圖像。

enter image description here

注: 每個的TextView有點擊動作

麥克投8中,拉拉投9喜歡用包木窗conetxt個別文本。

+2

如果要包裝,請使用單個多行文本視圖。 –

+0

@GabeSechan我有每個文本視圖的點擊動作 –

回答

0

linearLayout中有什麼問題,whit textviews?但我認爲,您真正需要的是可跨越字符串,在這種情況下,您可以設置格式(顏色,字體大小,樣式以及您想要的內容,以及每個單詞的onClick操作,並且只需要一個文本視圖。

+0

如何通過多個點擊動作顯示一個文本視圖?你能簡單介紹一下嗎?謝謝 –

+0

我有一個自定義視圖(合併xml),其中包含文本視圖(原來它是一個更復雜的視圖)。 我這樣的自定義視圖類 – user3057944

0

我有一個包含一個文本視圖(本來這是一個比較複雜的視圖)的自定義視圖(合併XML)。 我的自定義視圖這樣

公共類實例類擴展的LinearLayout {

保護上下文的背景下;

protected TextView titleView;

public Example(Context context) { 
    super(context); 
    this.context = context; 
    LayoutInflater inflater = (LayoutInflater) `enter code here`context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    inflater.inflate(R.layout.bloghu_title_layout, this, true); 
    this.setOrientation(LinearLayout.VERTICAL); 

    titleView = (TextView) getChildAt(0); 
} 

public void setBlogTitle(String blogTitle, final String blogUrl, String author, final String authorUrl) { 
    SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(); 

    spannableStringBuilder.append(blogTitle.toUpperCase()); 
    spannableStringBuilder.append("/"); 
    spannableStringBuilder.setSpan(new RelativeSizeSpan(1.5f), 0, blogTitle.length() + 2, 0); 
    spannableStringBuilder.append(author); 
    spannableStringBuilder.setSpan(new RelativeSizeSpan(1.2f), spannableStringBuilder.length() - author.length(), spannableStringBuilder.length(), 0); 

    spannableStringBuilder.setSpan(new NonUnderlineClickableSpan() { 

     @Override 
     public void onClick(View widget) { 
      Log.d("span", blogUrl); 
     } 
    }, 0, blogTitle.length(), 0); 
    spannableStringBuilder.setSpan(new NonUnderlineClickableSpan() { 

     @Override 
     public void onClick(View widget) { 
      Toast.makeText(context, authorUrl, Toast.LENGTH_SHORT).show(); 
     } 
    }, spannableStringBuilder.length() - author.length(), spannableStringBuilder.length(), 0); 
    spannableStringBuilder.setSpan(new ForegroundColorSpan(context.getResources().getColor(R.color.index_orange)), 0, blogTitle.length(), 0); 
    spannableStringBuilder.setSpan(new ForegroundColorSpan(context.getResources().getColor(R.color.black)), 
      spannableStringBuilder.length() - author.length(), spannableStringBuilder.length(), 0); 
    titleView.setMovementMethod(LinkMovementMethod.getInstance()); 
    titleView.setText(spannableStringBuilder, BufferType.SPANNABLE); 
} 

}

的NonUnderlineClickableSpan()是一個擴展ClickAbleSpan(),它只是因爲我不想強調可點擊文字,結束它,你必須重寫一個空的onclick方法: 公共類NonUnderlineClickableSpan擴展ClickableSpan {

@Override 
public void updateDrawState(TextPaint ds) { 
    ds.setColor(ds.linkColor); 
    ds.setUnderlineText(false); // set to false to remove underline 
} 

@Override 
public void onClick(View widget) { 
    // TODO Auto-generated method stub 

} 

正如你在例類看,你可以設置一個新的NonUnderlineClickableSpan,在其加入onClick()方法,你可以設置爲發生什麼,比你要設置的第一和cl的最後一個字符可惡的跨度和一個標誌(這是最後一個參數,在這種情況下爲0)。

Whit ForegroundSpan你可以設置字體顏色,相對大小範圍,你可以設置不同的文本大小,並且有很多span文本樣式並使其交互,但它是一個非常不足的文檔。

我還沒有找到關於這個主題的好教程,所以如果有人知道一個,請讓我知道:)。

+0

這是您感興趣的教程嗎? http://blog.stylingandroid.com/archives/177或http://flavienlaurent.com/blog/2014/01/31/spans/? – frozenkoi

+0

非常感謝,特別是第二個! – user3057944

相關問題