TextView Text anpassen - unterschiedlichen Screens

  • 0 Antworten
  • Letztes Antwortdatum
StefMa

StefMa

Dauer-User
450
Hi,

ich bekomme einen nicht vorhersehbaren Text dessen Länge ich nicht kenne.
Als Layout habe ich nur ein RelativeLayout mit einem TextView drin.

Ich möchte, dass ich verschieden Seiten habe. Also kann ich nicht einfach dem TextView den kompletten Text geben. Ich müsste den Text zerkleinern.

Ich habe überhaupt keine Ahnung wie ich das anstellen soll. Kann mir da jemand helfen? Kleinen Denkanstoß?

Ich müsste ja quasi dem TextView den Text geben. Dann müsste ich iwie herausfinden, wann der Text am unterem Rand (bzw. vor der SplitActionBar) ankommt. Ab dort abschneiden. Wie bekomme ich das hin?

Danke und Gruß

Ice

Der ursprüngliche Beitrag von 17:18 Uhr wurde um 17:45 Uhr ergänzt:

Habe eine Lösung gefunden:

Code:
	    // obtaining screen dimensions      
	    TextView tv = (TextView) findViewById(R.id.textview_content);
	    int screenHeight = tv.getHeight()-100;
	    int screenWidth = tv.getWidth();
	    
	    int totalPages = 0;

	    while (contentString != null && contentString.length() != 0) 
	    {
	        totalPages ++;

	        // creating new textviews for every page
	        TextView contentTextView = new TextView(this);
	        contentTextView.setWidth(ViewGroup.LayoutParams.FILL_PARENT);
	        contentTextView.setHeight(ViewGroup.LayoutParams.FILL_PARENT);
	        contentTextView.setMaxHeight(screenHeight);
	        contentTextView.setMaxWidth(screenWidth);

	        float textSize = contentTextView.getTextSize();
	        Paint paint = new Paint();
	        paint.setTextSize(textSize);

	        int numChars = 0;
	        int lineCount = 0;
	        int maxLineCount = screenHeight/contentTextView.getLineHeight();
	        contentTextView.setLines(maxLineCount);

	        while ((lineCount < maxLineCount) && (numChars < contentString.length())) {
	            numChars = numChars + paint.breakText(contentString.substring(numChars), true, screenWidth, null);
	            lineCount ++;
	        }

	        // retrieve the String to be displayed in the current textbox
	        String toBeDisplayed = contentString.substring(0, numChars);
	        contentString = contentString.substring(numChars);
	        contentTextView.setText(toBeDisplayed);
//	        flipper.addView(contentTextView);

	        Log.e("LOG", toBeDisplayed);
	        chapterContentList.add(toBeDisplayed);


	        numChars = 0;
	        lineCount = 0;
	    }

Habe ich auf stackoverflow gefunden und für mich angepasst. Funktioniert aber 1a :)

Gruß
 

Ähnliche Themen

G
Antworten
13
Aufrufe
628
Gerdchen07
G
Zurück
Oben Unten