Android: как отобразить более одного выделения одновременно (фокус для двух выделений) - PullRequest
4 голосов
/ 20 декабря 2010

Я хочу 2 пометки в моем приложении. Но всегда работает только один. Если я прокомментирую первый, то второй будет работать. В противном случае первый. Или только один шатер фокусируется одновременно. Если мы нажмем стрелку вниз, то вторая получит фокус. Как оба эти шатра могут сфокусироваться?

Как я могу отображать 2 области одновременно? Ниже приведен мой код:

 <RelativeLayout 
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:id="@+id/imgLogotb">

      <TextView 
                    android:id="@+id/txt1" 
                    android:layout_width="wrap_content" 
                    android:text="START | lunch 20.00 | Dinner 60.00 | Travel 60.00 | Doctor 5000.00 | lunch 20.00 | Dinner 60.00 | Travel 60.00 | Doctor 5000.00 | END" 
                    android:layout_height="20dip"
                    android:singleLine="false"
                    android:ellipsize="marquee"   
                    android:marqueeRepeatLimit="marquee_forever"
                    android:scrollHorizontally="true" 
                    android:focusable="true" 
                    android:focusableInTouchMode="true" 
                   android:freezesText="true">
     </TextView>

     <TextView 
                    android:id="@+id/txt2" 
                    android:layout_width="wrap_content" 
                    android:text="START | lunch 1.00 | Dinner 2.00 | Travel 3.00 | Doctor 4.00 | lunch 5.00 | Dinner 6.00 | Travel 7.00 | Doctor 8.00 | END" 
                    android:layout_height="20dip"
                    android:singleLine="false"
                    android:ellipsize="marquee"   
                    android:marqueeRepeatLimit="marquee_forever"
                    android:scrollHorizontally="true" 
                    android:focusable="true" 
                    android:focusableInTouchMode="true" 
                    android:freezesText="true">
      </TextView>
</RelativeLayout>

Пожалуйста, помогите мне, дав решение .... Спасибо ...

1 Ответ

4 голосов
/ 02 августа 2011

Я обычно не отвечаю на старые вопросы. Но в этом случае я столкнулся с той же проблемой, и это была интересная ситуация.

Теперь я нашел патч, можно сказать, для себя. Текст Marquee работает, когда он находится в фокусе. Теперь наша цель состоит в том, чтобы сосредоточиться на каждом textView одновременно.

для этого мы сделаем наш собственный класс компонента TextView. и всегда возвращает true в методе isFocusable (). Вот и все .....

public class ScrollingTextView extends TextView {

    @Override

    protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {

        if(focused)

            super.onFocusChanged(focused, direction, previouslyFocusedRect);

    }

    @Override

    public void onWindowFocusChanged(boolean focused) {

        if(focused)

            super.onWindowFocusChanged(focused);

    }


    @Override

    public boolean isFocused() {

        return true;

    }
 }

Теперь все, что вам нужно сделать, это добавить этот textView в ваш XML-макет следующим образом.

android:text="LONG LONG LONG LONG text..................."

android:singleLine="true"

android:ellipsize="marquee"

android:marqueeRepeatLimit="marquee_forever"

android:scrollHorizontally="true"

android:id="@+id/TextView03"

android:padding="5dip" 

android:layout_width="wrap_content" 

android:layout_height="wrap_content" />

и все готово, вы можете добавлять этот компонент TextView столько раз, сколько хотите в макете xml. и все textView будут выделяться одновременно.

Спасибо.

...