2

我正在为我的应用程序开发一个自定义小部件,以复制布局的首选项按钮的外观。问题是“摘要”文本在碰到视图的右墙时不会换行。我试图保持的目标之一是这个小部件完全由没有 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);

以及许多其他技巧,但它们都以相同的方式结束。

4

1 回答 1

4

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);
于 2012-09-06T05:42:11.643 回答