Текст выделения в Android - PullRequest
       28

Текст выделения в Android

57 голосов
/ 02 февраля 2010

Как я могу использовать выделенный текст в приложении для Android?

Ответы [ 15 ]

1 голос
/ 19 июня 2014

Используйте это, чтобы установить Marque:

    final TextView tx = (TextView) findViewById(R.id.textView1);
    tx.setEllipsize(TruncateAt.MARQUEE);
    tx.setSelected(true);
    tx.setSingleLine(true);
    tx.setText("Marquee needs only three things to make it run and these three things are mentioned above.");

Вам не нужно использовать " android: marqueeRepeatLimit =" marquee_forever"в XML-файл. Marquee будет работать даже без этого.

1 голос
/ 29 августа 2013

Я перепробовал все вышеперечисленное, но для меня это не сработало. Когда я добавляю

android:clickable="true"

тогда это отлично сработало для меня. Я не знаю почему. Но я счастлив работать с этим.

Вот мой полный ответ.

android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"

android:clickable="true"
0 голосов
/ 21 марта 2017

С ответом выше, вы не можете установить скорость или иметь гибкость для настройки функциональности представления текста. Чтобы иметь собственную скорость прокрутки и гибкость для настройки свойств выделения, используйте следующее:

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ellipsize="marquee"
    android:fadingEdge="horizontal"
    android:lines="1"
    android:id="@+id/myTextView"
    android:padding="4dp"
    android:scrollHorizontally="true"
    android:singleLine="true"
    android:text="Simple application that shows how to use marquee, with a long text" />

В пределах вашей деятельности:

private void setTranslation() {
        TranslateAnimation tanim = new TranslateAnimation(
                TranslateAnimation.ABSOLUTE, 1.0f * screenWidth,
                TranslateAnimation.ABSOLUTE, -1.0f * screenWidth,
                TranslateAnimation.ABSOLUTE, 0.0f,
                TranslateAnimation.ABSOLUTE, 0.0f);
        tanim.setDuration(1000);//set the duration
        tanim.setInterpolator(new LinearInterpolator());
        tanim.setRepeatCount(Animation.INFINITE);
        tanim.setRepeatMode(Animation.ABSOLUTE);

        textView.startAnimation(tanim);
    } 
0 голосов
/ 16 апреля 2016

Вы можете использовать TextView или ваш собственный TextView. Последний случай, когда текстовое представление не может фокусироваться постоянно.

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

<com.example.myapplication.CustomTextView
            android:id="@+id/tvScrollingMessage"
            android:text="@string/scrolling_message_main_wish_list"
            android:singleLine="true"
            android:ellipsize="marquee"
            android:marqueeRepeatLimit ="marquee_forever"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:scrollHorizontally="true"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:background="@color/black"
            android:gravity="center"
            android:textColor="@color/white"
            android:textSize="15dp"
            android:freezesText="true"/>

ПРИМЕЧАНИЕ. В приведенном выше фрагменте кода com.example.myapplication - это пример имени пакета, который должен быть заменен вашим собственным именем пакета.

Затем, в случае использования CustomTextView, вы должны определить класс CustomTextView:

public class CustomTextView extends TextView {
        public CustomTextView(Context context) {
            super(context);
        }
        public CustomTextView(Context context, AttributeSet attrs) {
            super(context, attrs);

        }

        public CustomTextView(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);

        }


        @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;
        }
    }

Надеюсь, это будет полезно для вас. Ура!

0 голосов
/ 04 февраля 2011

Это будет эквивалентно «концу»:

where = TruncateAt.END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...