Вот проблема: я могу нормально отображать длинный файл .txt в эмуляторе, но текст обрезается, когда я читаю его на телефоне - PullRequest
0 голосов
/ 02 апреля 2012

Итак, я делаю свое первое приложение для Android, которое в основном содержит ~ 250 .txt файлов в папке ресурсов. Я перечисляю их все в ListActivity, чтобы вы могли выбрать тот, который вы хотите прочитать, а затем открыть его в TextView. Приложение работает нормально в эмуляторе, никаких проблем. Однако, когда я устанавливаю .apk на свой телефон, самые длинные .txt файлы обрезаются в середине предложения. Это не происходит на эмуляторе. Я в растерянности, я понятия не имею, что может быть причиной этого, но если у кого-то есть какие-либо идеи, я буду рад их изучить!

Вот код, я все еще очень много изучаю, и я понимаю, что это, вероятно, не оптимальный способ сделать то, что я хочу сделать, но в любом случае, здесь идет речь:

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    // TODO Auto-generated method stub
    super.onListItemClick(l, v, position, id);
    String path = fikBog[position];

    try {

        bog = getAssets().open("skyrimbooks/" + path);
        int size = bog.available();
        byte[] buffer = new byte[size];
        bog.read(buffer);
        bog.close();
        String bookInput = new String(buffer);
        Bundle taske = new Bundle();
        taske.putString("bog", bookInput);
        Intent g = new Intent(GotSkyrimBooks.this, BookReader.class);
        g.putExtras(taske);
        startActivity(g);

    } catch (IOException e) {
        // Should never happen!
        throw new RuntimeException(e);
    }


}

Таким образом, в ListActivity пользователь может просматривать все различные файлы .txt, а когда он выбирает один, он открывается в классе BookReader. А в классе BookReader текстовое представление заполняется так:

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.bookreader);

    reader = (TextView) findViewById(R.id.reader);


Bundle fikTaske = getIntent().getExtras();
fikBog = fikTaske.getString("bog");
reader.setText(fikBog);
}

Вот мой .xml. Просто, как может быть:

<ScrollView
    android:id="@+id/scrollView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <LinearLayout 
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/reader"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView"
            android:textColor="#000000" />

  </LinearLayout>
</ScrollView>

Ответы [ 2 ]

1 голос
/ 02 апреля 2012

Некоторые телефоны, кажется, устанавливают низкую максимальную длину по умолчанию для TextViews.Я бы предложил установить для свойства maxLength в XML для TextView нечто большее, чем файлы, которые вы хотите просмотреть.

Если вы хотите сделать это программно, этот ответ должен помочь вам в этом: Как программно установить maxLength в Android TextView?

0 голосов
/ 02 апреля 2012

Если вы хотите, чтобы отображался только текст, вы можете удалить ScrollView и установить метод прокрутки для вашего текста. Это должно работать. Проверьте этот ответ здесь

...