2015-10-02 1 views
0

Так у меня есть андроид приложение, которое расшифровывает нормальный текст в ASCII-арт текст, скажем, как от «привет мир» вПолучить Android EditText для прокрутки по горизонтали без слова завернуть

_   _ _       _  _ 
| |__ ___| | | ___ __  _____ _ __| | __| | 
| '_ \/_ \ | |/ _ \ \ \ /\// _ \| '__| |/ _` | 
| | | | __/ | | (_) | \ V V/(_) | | | | (_| | 
|_| |_|\___|_|_|\___/ \_/\_/ \___/|_| |_|\__,_| 

(извините мобильных пользователей, вы могли бы не могу это видеть, idk)

и, естественно, мне нужен EditText, в котором конечный продукт (текст ascii-art) не переносит слово, поскольку, если бы это было так, это выглядело бы все смешано и все. Мне нужен горизонтальный прокручиваемый EditText. Вот мой текущий код.

super.onCreate(savedInstanceState); 

    Intent intent = getIntent(); 

    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); 
    String letter; 
    EditText textView = new EditText(this); 
    Typeface courier = Typeface.createFromAsset(getAssets(),"Courier_Prime.ttf"); 
    textView.setTextSize(20); 
    textView.setTypeface(courier); 
    setContentView(textView); 
    String value; 
    String toPrint; 
    int textLength = message.length(); 
    for(int i = 0; i <= 14; i++){ 
     for(int j = 0; j < textLength; j++){ 
      letter = message.substring(j,j+1).toUpperCase(Locale.getDefault()); 
      value = letter + i; 
      toPrint = isometric.get(value); 
      textView.append(toPrint); 
      if(j == textLength-1){ 
       textView.append("\n"); 
      } 
     } 
    } 

И ничего, кроме небольшого RelativeLayout в XML-файле.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.dumpong.myfirstapp.DisplayMessageActivity" > 

<EditText 
    android:id="@+id/asciiBox" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:scrollHorizontally="true"/> 


</RelativeLayout> 

Я не совсем уверен, как сделать горизонтальную прокрутку для EditText. Программист или через XML в порядке. Спасибо за любую помощь!

ответ

0

Обертка текста редактирования с помощью horizontalscrollview должна сделать это.

<HorizontalScrollView> 
    <Edittext>...</Edittext> 
</HorizontalScrollView> 
+0

Я пробовал это. По какой-то причине это не сработало. Я попробую еще раз. – dumpong

+0

Попробуйте установить горизонтальный вид прокрутки с помощью fillparent – KingBryan

+0

Вы имеете в виду fillparent или 'match_parent'? Я никогда не слышал о заполнении до того, как match_parent не работал. Опять же, я посмотрю, что я могу сделать haha. – dumpong

1

Возможно, я неправильно понял, но вот как иметь EditText, который может прокручиваться по горизонтали.

Необходимое расположение:

<HorizontalScrollView 
    android:id="@+id/SCROLLER_ID" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="#333333" 
    android:fillViewport="true" 
    android:scrollbars="horizontal"> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal"> 

     <EditText 
      android:id="@+id/TEXT_STATUS_ID" 
      android:layout_width="0dip" 
      android:layout_height="fill_parent" 
      android:layout_gravity="center" 
      android:layout_weight="1.0" 
      android:textColor="#cccccc" 
      android:textSize="35sp" /> 
    </LinearLayout> 
</HorizontalScrollView> 

А вот ассоциированный код: вы должны вызвать Init() в OnCreate().

private EditText mEditText; 
private HorizontalScrollView mScrollView; 

private void init() { 
    mEditText = (EditText) findViewById(R.id.TEXT_STATUS_ID); 
    mScrollView = (HorizontalScrollView) findViewById(R.id.SCROLLER_ID); 
    // loadDoc(); 
    String s = "Lorem ipsum dolor sit amet, consectetur adipiscing elit." 
      + "Aliquam tempus convallis metus, ac congue dui elementum ut." 
      + "Suspendisse rutrum non sapien feugiat fermentum." 
      + "Phasellus vulputate quam in sapien vulputate venenatis." 
      + "Pellentesque porta tincidunt nisi, et scelerisque augue facilisis nec." 
      + "Curabitur eget risus quam." 
      + "Maecenas pellentesque egestas enim, in ornare nisl lobortis id." 
      + "Nunc vitae facilisis libero, vitae porttitor tellus."; 
    mEditText.setText(s); 
    scrollToBottom(); 
} 

private void scrollToBottom() { 
    mScrollView.post(new Runnable() { 
     public void run() { 
      mEditText.setHorizontallyScrolling(true); 
      mEditText.setMovementMethod(new ScrollingMovementMethod()); 
      mScrollView.smoothScrollTo(0, mEditText.getBottom()); 
     } 
    }); 
} 

Не стесняйтесь комментировать, если я неправильно понял или вам нужно больше объяснений.

+0

Я не уверен, что я * прекрасно понимаю, как это использовать. Он продолжает давать мне ошибки в разделе public void scrollToBottom() {'о mScrollView и mEditText, которые не существуют, возможно, проблема с областью? – dumpong

+0

Я понятия не имею, что я делаю неправильно. Я задам еще один вопрос и вопрос, так как это было полезно. – dumpong

+0

Вы должны объявить их, я отредактирую свой ответ – Kassisdion

0
  • Горизонтальная прокрутка EditText

Адаптированный ответ Kassisdion в [проверено и работает на апи 21; android: 5.0]:

<?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:gravity="top"> 

<HorizontalScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_marginLeft="2dp" 
    android:layout_marginRight="2dp" 
    android:layout_marginStart="2dp" 
    android:layout_marginTop="2dp" 
    android:fillViewport="true"> 

    <EditText 
     android:id="@+id/editText" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:background="@android:color/transparent" 
     android:fadingEdge="none" 
     android:gravity="top" 
     android:inputType="textMultiLine" 
     android:isScrollContainer="true" 
     android:overScrollMode="ifContentScrolls" 
     android:scrollHorizontally="true" 
     android:scrollbarStyle="insideOverlay" 
     android:scrollbars="vertical|horizontal"/> 

</HorizontalScrollView> 

</LinearLayout>