У меня есть большая история в формате String. Я хочу показать текст в галерее. Что я хочу сделать, так это нарезать весь текст таким образом, чтобы все мои представления в галерее отображали текст, который помещается на экране.
Так что я могу сделать свою строку частично, где каждая часть будет отображаться на экране, и каждая часть будет занимать весь экран.
Следует отметить, что пользователь может изменить размер текста на Большой и Маленький, поэтому текст на экране также будет меняться при изменении размера.
Мне интересно, есть ли способ сделать это.
Большое спасибо userSeven7s за помощь. Основываясь на вашем примере, я могу сделать пример. Вот он:
package com.gsoft.measure.text;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.LinearLayout;
import android.widget.TextView;
public class MainScreen extends Activity {
private final String TAG = "MainScreen";
private String textToBeShown = "These are the text";
private String sampleText = "Here are more text";
private TextView mTextView = null;
Handler handler = new Handler() {
public void handleMessage(Message msg) {
if (msg.what == 1) {
updateUI();
}
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTextView = (TextView) findViewById(R.id.ui_main_textView);
mTextView.setTextSize(20f);
for (int i = 0; i < 100; i++) {
textToBeShown = textToBeShown + " =" + i + "= " + sampleText;
}
// I am using timer as the in UI is not created and
// we can't get the width.
TimerTask task = new TimerTask() {
@Override
public void run() {
// So that UI thread can handle UI work
handler.sendEmptyMessage(1);
}
};
Timer timer = new Timer();
timer.schedule(task, 1000 * 1);
}
@Override
protected void onResume() {
super.onResume();
}
private void updateUI() {
// Set text
mTextView.setText(textToBeShown);
// Check the width
Log.e(TAG, "Width = " + mTextView.getWidth());
// Check height of one line
Log.e(TAG, "Line height= " + mTextView.getLineHeight());
// Check total height for TextView
Log.e(TAG, "Text height= " + mTextView.getHeight());
// No of line we can show in textview
int totalLine = mTextView.getHeight() / mTextView.getLineHeight();
Log.e(TAG, "Total Lines are height= " + totalLine);
for (int i = 0; i < totalLine; i++) {
// Get No of characters fit in that textView
int number = mTextView.getPaint().breakText(textToBeShown, 0, textToBeShown.length(), true,
mTextView.getWidth(), null);
Log.e(TAG, "Number of chracters = " + number);
// Show the text that fit into line
Log.e(TAG, textToBeShown.substring(0, number));
// Update the text to show next
textToBeShown = textToBeShown.substring(number, textToBeShown.length());
}
}
}
Вот мой XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_id_for_value"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/black"
android:orientation="vertical" >
<TextView
android:id="@+id/ui_main_textView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/twitter"
android:textColor="@color/white" />
</LinearLayout>