3

У меня есть TextView в FrameLayout следующим образом:Как указать ширину представления для обертывания содержимого и, тем не менее, быть более широким, чем его родитель?

<FrameLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    ... > 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:singleLine="true" 
     ... /> 

Текст TextView устанавливается в коде и у меня есть перевод анимации, работающие на TextView, который скользит он оставил по родительским Вид следующим образом:

myTextView.setText(getVenueInformationText()); 
myTextView.setAnimation(AnimationUtils.loadAnimation(myContext, R.anim.slide_left_repeatedly)); 

мне нужно обслужить обоих случаях, когда текст в TextView короче или шире, чем ширина родительского вида (FrameLayout в данном случае). Тем не менее, я нахожу, что ширина анимированного TextView только когда-либо столь же широка, как и FrameLayout (и, таким образом, мой текст прерывается).

Кто-нибудь знает, почему, когда я устанавливаю текст в своем текстовом элементе и устанавливаю анимацию, TextView появляется только так широко, как FrameLayout (даже если текст в TextView должен растягивать его, чтобы он был шире, чем FrameLayout) ?

Примечание 1: Бегущей анимация на TextView не будет делать эту работу для меня, как это возможно текст в TextView быть меньше ширины родительского вида (в этом случае анимация marquee не запускается ... и мне нужна анимация для запуска, независимо от ширины текста).

Примечание 2: Ниже приводится определение XML из перевода анимации я использую:

<translate 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/linear_interpolator" 
    android:fromXDelta="100%p" 
    android:toXDelta="-100%" 
    android:repeatCount="infinite" 
    android:duration="15000" /> 
+1

Вы пытались использовать 'LinearLayout' вместо' FrameLayout'? –

+0

Yup. Но до сих пор нет радости ... –

+0

Посмотрите, работает ли это: http://stackoverflow.com/questions/3862409/horizontal-scrolling-text-in-android – AJcodez

ответ

2

решил проблему, поставив мою TextView в HorizontalScrollView (вместо FrameLayout или LinearLayout) следующим образом ...

<HorizontalScrollView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:paddingLeft="10dp" 
    android:paddingRight="10dp" 
    android:scrollbars="none" > 
    <TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:singleLine="true" /> 
</HorizontalScrollView> 

... и затем установить текст и анимацию TextView программно/динамически до.

+0

Я реализовал прокручиваемое текстовое изображение выделения и нашел эту очень полезную часть для моей окончательной реализации , Другие решения предлагали переопределить взгляды onMeasure в сочетании с AnimationListener, но использование ScrollView кажется гораздо более последовательным. –

0

Так что, как я понимаю ваши правильно, вы хотите сделать что-то вроде бегущей строки. В этом случае вы должны динамически загружать некоторую информацию с хоста, конвертировать его в String и устанавливать на ваш TextView.

Я хотел бы сделать это таким образом: ваш TextView должен обернуть содержимое по ширине (по крайней мере), то вы используете стандартный TranslateAnimation, начиная с правой стороны родителя View и заканчивая (parentView.getLeft() - TextView.getWidth() - в этом если ваш TextView будет скрыт), установите AnimationListener для этой анимации и в конце этого проверьте, есть ли какая-то новая информация из источника, которую вы можете установить как новый контент TextView, и снова запустите свой Animation.

+1

Спасибо за ответ teoREtik. См. Примечание 2, которое я добавил к моему вопросу и которое, я считаю, делает именно то, что вы описали. Ширина TextView установлена ​​в 'wrap_content', а анимация работает и перемещает TextView слева направо в порядке. Проблема в том, что ширина TextView никогда не превышает ширину рамки FrameLayout, даже если текст в TextView шире, чем текст FrameLayout ... –

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

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