我正在为我的应用程序开发一个自定义小部件,以复制布局的“首选项”按钮的外观。问题是“摘要”文本在到达视图的右墙时不会换行。我试图保留的目标之一是这个小部件完全由没有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);
以及其他一些技巧,但它们都以同样的方式结束。
答案 0 :(得分: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);