package cn.androidy.logger.view; import android.content.Context; import android.graphics.Color; import android.graphics.Typeface; import android.text.Editable; import android.text.TextWatcher; import android.util.AttributeSet; import android.util.TypedValue; import android.view.Gravity; import android.view.ViewGroup; import android.widget.ScrollView; import android.widget.TextView; public class LoggerDetailView extends ScrollView { private TextView mLogDetailText; public LoggerDetailView(Context context) { this(context, null); } public LoggerDetailView(Context context, AttributeSet attrs) { super(context, attrs); init(); } private void init() { ViewGroup.LayoutParams scrollParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); setLayoutParams(scrollParams); setBackgroundColor(Color.WHITE); mLogDetailText = new LogView(getContext()); ViewGroup.LayoutParams logParams = new ViewGroup.LayoutParams(scrollParams); logParams.height = ViewGroup.LayoutParams.WRAP_CONTENT; logParams.width = ViewGroup.LayoutParams.MATCH_PARENT; mLogDetailText.setLayoutParams(logParams); mLogDetailText.setClickable(true); mLogDetailText.setFocusable(true); mLogDetailText.setTypeface(Typeface.MONOSPACE); // Want to set padding as 16 dips, setPadding takes pixels. Hooray math! int paddingDips = 16; double scale = getResources().getDisplayMetrics().density; int paddingPixels = (int) ((paddingDips * (scale)) + .5); mLogDetailText.setPadding(paddingPixels, paddingPixels, paddingPixels, paddingPixels); mLogDetailText.setCompoundDrawablePadding(paddingPixels); mLogDetailText.setTextColor(Color.BLACK); mLogDetailText.setGravity(Gravity.BOTTOM); mLogDetailText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15); addView(mLogDetailText); mLogDetailText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { fullScroll(ScrollView.FOCUS_DOWN); } }); } public TextView getLogDetailText() { return mLogDetailText; } }