Возможно ли для TextView Marquee в виджете, который расширяет AppWidgetProvider? - PullRequest
13 голосов
/ 23 октября 2011

Я очень новичок в программировании на Android, и я везде читал, и я не могу найти никакого решения.

Основная проблема заключается в том, что у меня есть TextView в виджете, и мне нужен текстпрокручивать, когда текст длиннее, чем TextView layout_width.Это мой код в layout_widget.xml

    <TextView android:id="@+id/fact" android:layout_width="200dp"
            android:text="Loading... More text to see if it spans or not and want more"
            android:singleLine="true" 
            android:ellipsize="marquee"
            android:marqueeRepeatLimit ="marquee_forever"
            android:scrollHorizontally="true"
            android:focusable="true"
            android:focusableInTouchMode="true" />

Теперь я прочитал, что мне нужно сделать так, чтобы TextView был в фокусе, что я и сделал.Я также прочитал, что вам нужно установить свойство setSelected (true) , и это то, где я пытаюсь установить.В моей активности по умолчанию (в AndroidManifest.xml) у меня есть следующий код:

            @Override
            public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.widget_layout);
                findViewById(R.id.fact).setSelected(true);
                setContentView(R.layout.main);
            }

Часть ниже используется для установки Content на widget_layout.xml, а затем для свойства TextView для setSelected значение true

                setContentView(R.layout.widget_layout);
                findViewById(R.id.fact).setSelected(true);

Затем я возвращаю ContentView обратно в main.xml

Теперь я предполагаю, что это неправильно, и это не так, как это должно быть сделано.Но мне интересно, можно ли это сделать.Я также читал, что если вы можете переопределить Framework, вы можете поместить свои собственные свойства, например, ScrollView, это тоже правильно?Также я нахожусь на SDK версии 7.

Я высоко ценю помощь, которую я получаю, спасибо всем!

Редактировать: Удаляя setContentView (R.layout.main); при запуске приложения через приложение draw текст прокручивается, а виджет - нет.Вид приводит меня к тому, что виджет не может иметь шатер ???У кого-нибудь есть шатер, работающий над виджетом ??

Edit2: Решено.Вот как это делается

В XML для текстового представления вам нужно иметь тег Это в принципе, я думаю, то же самое, что getSeleted (true);

Так что код должен быть какследуют:

    <TextView android:id="@+id/fact" android:layout_width="200dp"
            android:text="Loading... More text to see if it spans or not and want more"
            android:singleLine="true" 
            android:ellipsize="marquee"
            android:marqueeRepeatLimit ="marquee_forever"
            android:scrollHorizontally="true"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:duplicateParentState="true">
        <requestFocus android:focusable="true" android:focusableInTouchMode="true"
            android:duplicateParentState="true" />
    </TextView>

Ответы [ 3 ]

28 голосов
/ 30 октября 2011

решаемая.Вот как это делается

В XML для текстового представления вам нужен тегследуют:

<TextView android:id="@+id/fact" android:layout_width="200dp"
        android:text="Loading... More text to see if it spans or not and want more"
        android:singleLine="true" 
        android:ellipsize="marquee"
        android:marqueeRepeatLimit ="marquee_forever"
        android:scrollHorizontally="true"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:duplicateParentState="true">
    <requestFocus android:focusable="true" android:focusableInTouchMode="true"
        android:duplicateParentState="true" />
</TextView>
1 голос
/ 08 октября 2015

enter image description here

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

<TextView
    android:id="@+id/textview"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:ellipsize="marquee"
    android:fadingEdge="horizontal"
    android:lines="1"
    android:marqueeRepeatLimit="marquee_forever"
    android:scrollHorizontally="true"
    android:singleLine="true"
    android:text="***************Android Dhina Marquee  effect in textview ***************************** "
    android:textColor="#9bebe4" />

для более подробной информации нажмите здесь http://androiddhina.blogspot.in/2015/10/marquee-effect-in-android-textview.html

0 голосов
/ 24 октября 2011

Вы звоните setContentView дважды:

setContentView(R.layout.widget_layout);
findViewById(R.id.fact).setSelected(true);
setContentView(R.layout.main);

Ваша деятельность может иметь только один макет. Если widget_layout является макетом для вашего виджета, который включает в себя текстовое представление, то вам не нужен второй setContentView.

...