2015-07-23 2 views
1

Что я хочу в картинках: enter image description hereКак отключить прокрутку в HorizontalScrollView?

На словах: я хочу отключить скроллинг с форматирования текста внутри HorizontalScrollView.

Часть XML:

<ScrollView 
    android:id="@+id/review_scrollview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:scrollbars="horizontal" 
    android:fillViewport="true" 
    android:layout_marginTop="10dp"> 

    <HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"> 


     <TextView 
      android:id="@+id/tt_review_content" 
      android:layout_width="wrap_content" 
      android:layout_height="fill_parent" 
      android:textAppearance="?android:attr/textAppearanceSmall" 
      android:text="Some long text" 
      android:scrollHorizontally="true"/> 

    </HorizontalScrollView> 

</ScrollView> 

метод (не работает):

private void setTtAreaWrapContent(boolean value) { 
    ViewGroup.LayoutParams params = textField.getLayoutParams(); 
    if(value) { // Wrap content 
     textField.setWidth(scrollView.getWidth()); 
    } else { // Scroll 
     params.width = ViewGroup.LayoutParams.WRAP_CONTENT; 
    } 
    textField.setLayoutParams(params); 
} 
+0

Какой смысл использовать HorizontalScrollView, если вы не хотите прокручивать вообще? –

+0

@AritraRoy, я хочу прокручивать текст, если пользователь выбрал его в настройках. – Alexandr

+0

[DIsable horizontal scroll view] http://stackoverflow.com/questions/10462126/android-horizontalscrollview-disable-scrolling –

ответ

0

Существует очень простой способ сделать это.

Проверьте, хочет ли пользователь прокручивать или нет, а затем сохраните его в булевой переменной, shouldScroll.

Теперь это сделать в onCreate,

HorziontalScrollView scrollView= (HorizontalScrollView)findViewById(R.id.scrollView); 

if(!shouldScroll) 
scrollView.setOnTouchListener(new OnTouch()); 

Кроме того, необходимо определить класс OnTouch расширения OnTouchListener

private class OnTouch implements OnTouchListener 
{ 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
    return true; 
    } 
} 

Теперь для форматирования TextView, просто использовать android:singleLine="false" или использовать android:width="0dip"

+0

Возможно, я так не говорю ... Посмотрите: http://snag.gy/fOhiQ.jpg; Да, я не могу прокручивать, но текст по-прежнему отключен. Один из способов заключается в том, что TextView без ScrollView, но могу ли я просто форматировать текст до размера экрана? – Alexandr

-2

У меня была абсолютно такая же потребность в коде, поэтому я изначально предложил Vi ewSwitcher с теми же макетами, но с HorizontalScrollView и без него. И переключитесь на соответствующее представление в зависимости от настройки.

Однако я нашел более легкое решение. После воссоздания деятельности (когда упаковка настройки изменены пользователем), используйте код в OnCreate Methode:

if (isWrapContent) 
    { 
     View mTV = findViewById(R.id.my_text_view); 
     HorizontalScrollView myHSV = (HorizontalScrollView) findViewById(R.id.my_hsv); 
     ViewGroup parent = (ViewGroup) myHSV.getParent(); 
     ViewGroup.LayoutParams params = myHSV.getLayoutParams(); 
     int index = parent.indexOfChild(myHSV); 
     myHSV.removeAllViews(); 
     parent.removeView(myHSV); 
     parent.addView(mTV, index, params); 
    } 

Вы должны использовать свои идентификаторы и переменные соответственно.

Он удалит горизонтальное прокрутку с встроенным текстом и затем снова вставляет текстовое изображение.

Почему этот ответ был поставлен на первое место - я был оценен по технической части моего ответа кем-то, который впоследствии удалил свой комментарий ниже, посоветовавшись не использовать слоты для ответов, которые должны быть в комментариях. Я хотел бы указать, что «умный чувак»:

  1. Мой ответ обеспечивает прямой и правильный ответ на то, как спросил вопрос может быть решен вместо замораживания горизонтального Scrollview или интересно о точке вопроса, так как это делается в других комментариях и ответах.
  2. Stackoverflow имеет странную логику, позволяющую мне писать ответы, но не позволяя мне писать комментарии. Полагаю, вы об этом знаете. Итак, обращайтесь к своим рекомендациям о слотах и ​​т. Д., А также запустите разработчиков этого сайта.

 Смежные вопросы

  • Нет связанных вопросов^_^