簡體   English   中英

TextView中的程序化文本換行

[英]Programmatic text wrapping in TextView

我正在為我的應用程序自定義窗口小部件,以復制用於布局的“首選項”按鈕的外觀。 問題在於,“摘要”文本碰到視圖的右牆時不會自動換行。 我要保留的目標之一是,此小部件完全由沒有XML屬性的Java制成。

下面是我用來創建文本視圖的代碼。

public void setSummary(String summary) {
    if (!TextUtils.isEmpty(summary)) {
        if (mSummaryView == null) {
            mSummaryView = new TextView(mContext);
            mSummaryView.setTextSize(14);
            mSummaryView.setTextColor(mContext.getResources().getColor(
                                            android.R.color.tertiary_text_dark));
            addView(mSummaryView);
        }
        mSummaryView.setText(summary);
        mSummaryView.setVisibility(View.VISIBLE);
    } else {
        if (mSummaryView != null) {
            mSummaryView.setVisibility(View.GONE);
        }
    }
    mSummaryText = summary;
}

這是我用來布局摘要視圖的代碼

mSummaryView.layout(
            mPreferencePadding + mIconWidth,
            centerVertical + (mCombinedTextHeight / 2) - mSummaryHeight,
            width - mPreferencePadding,
            centerVertical + (mCombinedTextHeight / 2));

我嘗試添加:

mSummaryView.setSingleLine(false);

以及其他許多技巧,但它們都以相同的方式結束。

TextView的最大寬度設置為屏幕的最大大小...您可能需要考慮填充,因為這會運行整個屏幕的大小

// get the screen size
DisplayMetrics mDisplayMetrics = context.getResources().getDisplayMetrics();
// force view width to only be as wide as the screen
mSummaryView.setMaxWidth(mDisplayMetrics.widthPixels);

// could be a oneliner :P
mSummaryView.setMaxWidth((getContext().getResources().getDisplayMetrics()).widthPixels);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM