2016-11-10 1 views
4

Я пытаюсь показать фрагмент кода в текстовом виде. Но я не могу сделать длинную текстовую строку автоматической прокруткой по горизонтали в текстовом виде.Как отобразить фрагмент кода в текстовом виде?

код:

TextView code = new TextView(getActivity()); 
    TableRow.LayoutParams paramsExample = new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT,TableRow.LayoutParams.WRAP_CONTENT); 
    code.setBackgroundColor(getResources().getColor(android.R.color.black)); 
    code.setPadding(5, 5, 5, 5); 
    code.setTextColor(getResources().getColor(android.R.color.white)); 
    code.setTextSize(TypedValue.COMPLEX_UNIT_SP,12); 
    code.setClickable(true); 
    code.setLayoutParams(paramsExample); 
    setCode(code, R.raw.codesnippet); 
    ll.addView(code); 

Я создаю этот TextView в fragment.fragment_layout.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/fragment_ll" 
    android:orientation="vertical"> 

</LinearLayout> 

и я начинаю этот фрагмент в деятельности в coordinatorlayout> nestedscrollview> LinearLayout (контейнер для фрагментов)

размер каждой ширины «соответствует родительскому»

это метод setcode:

public void setCode(TextView tv, int rawId) { 
    Resources res = getResources(); 
    BufferedReader input = new BufferedReader(new InputStreamReader(
      res.openRawResource(rawId))); 
    StringBuffer sb = new StringBuffer(); 
    try { 
     String line; 
     while ((line = input.readLine()) != null) { 
      sb.append(line); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     try { 
      input.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
    Spanned spannedCode = Html.fromHtml(sb.toString()); 
    tv.setText(spannedCode); 
} 

я получил этот фрагмент кода (codesnippet.txt) из VIM, toHtml.

но он не прокручивается по горизонтали. Что делать, чтобы сделать это автоматически прокручиваемым по горизонтали, как веб-просмотр?

выход с кодом выше:
enter image description here

после HorizontalScrollView и code.setHorizontallyScrolling (правда):
enter image description here
Горизонтальная прокрутка штраф в отдельных line.I работы необходимо отобразить фрагмент кода в виде блока.

+0

Я не уверен, если я получил это право, но, возможно, у вас нет новой строки в тексте? обычно это \ n, но sinve вы используете Html.fromHtml, тогда у вас должно быть
для новой строки. И с этим используйте code.setHorizontallyScrolling, и все должно быть хорошо. –

ответ

0

Ваш TextView должен быть внутри HorizontalScrollView как следующее:

<HorizontalScrollView 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <TextView android:layout_width="40dp" 
     android:layout_height="wrap_content" 
     android:scrollHorizontally="true" 
     android:text="Horizontal scroll view"/> 

</HorizontalScrollView> 
+0

Я уже пробовал это раньше. Но это показывает в одной строке не многострочную линию. Также я добавил tv.setSingleLine (false) после этой проблемы. Но все еще показывает одну строку – erginduran

+0

добавил скриншоты об этом ответе – erginduran