LogFragment.java (2920B)
1 package de.nordgedanken.rpicms.common.logger; 2 3 /** 4 * Created by frank on 14.10.14. 5 */ 6 import android.graphics.Typeface; 7 import android.os.Bundle; 8 import android.support.v4.app.Fragment; 9 import android.text.Editable; 10 import android.text.TextWatcher; 11 import android.view.Gravity; 12 import android.view.LayoutInflater; 13 import android.view.View; 14 import android.view.ViewGroup; 15 import android.widget.ScrollView; 16 17 public class LogFragment extends Fragment { 18 19 /** 20 * Simple fraggment which contains a LogView and uses is to output log data it receives 21 * through the LogNode interface. 22 */ 23 24 25 private LogView mLogView; 26 private ScrollView mScrollView; 27 28 public LogFragment() {} 29 30 public View inflateViews() { 31 mScrollView = new ScrollView(getActivity()); 32 ViewGroup.LayoutParams scrollParams = new ViewGroup.LayoutParams( 33 ViewGroup.LayoutParams.MATCH_PARENT, 34 ViewGroup.LayoutParams.MATCH_PARENT); 35 mScrollView.setLayoutParams(scrollParams); 36 37 mLogView = new LogView(getActivity()); 38 ViewGroup.LayoutParams logParams = new ViewGroup.LayoutParams(scrollParams); 39 logParams.height = ViewGroup.LayoutParams.WRAP_CONTENT; 40 mLogView.setLayoutParams(logParams); 41 mLogView.setClickable(true); 42 mLogView.setFocusable(true); 43 mLogView.setTypeface(Typeface.MONOSPACE); 44 45 // Want to set padding as 16 dips, setPadding takes pixels. Hooray math! 46 int paddingDips = 16; 47 double scale = getResources().getDisplayMetrics().density; 48 int paddingPixels = (int) ((paddingDips * (scale)) + .5); 49 mLogView.setPadding(paddingPixels, paddingPixels, paddingPixels, paddingPixels); 50 mLogView.setCompoundDrawablePadding(paddingPixels); 51 52 mLogView.setGravity(Gravity.BOTTOM); 53 mLogView.setTextAppearance(getActivity(), android.R.style.TextAppearance_Holo_Medium); 54 55 mScrollView.addView(mLogView); 56 return mScrollView; 57 } 58 59 @Override 60 public View onCreateView(LayoutInflater inflater, ViewGroup container, 61 Bundle savedInstanceState) { 62 63 View result = inflateViews(); 64 65 mLogView.addTextChangedListener(new TextWatcher() { 66 @Override 67 public void beforeTextChanged(CharSequence s, int start, int count, int after) {} 68 69 @Override 70 public void onTextChanged(CharSequence s, int start, int before, int count) {} 71 72 @Override 73 public void afterTextChanged(Editable s) { 74 mScrollView.fullScroll(ScrollView.FOCUS_DOWN); 75 } 76 }); 77 return result; 78 } 79 80 public LogView getLogView() { 81 return mLogView; 82 } 83 84 85 86 }