2

レイアウトの[設定]ボタンの外観を複製するために、アプリケーションのカスタムウィジェットに取り組んでいます。問題は、「要約」テキストがビューの右側の壁に当たったときに折り返されないことです。私が維持しようとしている目標の1つは、このウィジェットが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 に答える