我想在我的应用程序中的每个textview上使用Marquee效果...所以我认为我把它放在一个样式中:
<style name="MyTextViewStyle" parent="@android:style/Widget.TextView">
<item name="android:focusable">true</item>
<item name="android:focusableInTouchMode">true</item>
<item name="android:fontFamily">sans-serif-thin</item>
<item name="android:textSize">25sp</item>
<item name="android:ellipsize">marquee</item>
<item name="android:singleLine">true</item>
<item name="android:maxLines">1</item>
</style>
并在应用主题中设置:
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:textViewStyle">@style/MyTextViewStyle</item>
</style>
这个不工作:(
直接在TextView上尝试:
<TextView
android:ellipsize="marquee"
android:singleLine="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:maxLines="1"
android:id="@+id/text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="-5dp"
android:fontFamily="sans-serif"
android:textAllCaps="true" />
这 工作......
具有以下条件:该样式可能没有'focusable'和'focusableInTouchMode'选项。 但是在上面的TextView示例中没有这些上升,它将不会滚动...
所以我需要这些属性,但我无法让它们通过样式工作......任何人都有答案吗?
答案 0 :(得分:1)
如果可聚焦且 focusableInTouchMode 无法在Style中使用,请从 Style.xml 中删除并添加每个TextView
<style name="MyTextViewStyle" parent="@android:style/Widget.TextView">
<item name="android:fontFamily">sans-serif-thin</item>
<item name="android:textSize">25sp</item>
<item name="android:ellipsize">marquee</item>
<item name="android:singleLine">true</item>
<item name="android:maxLines">1</item>
</style>
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:textViewStyle">@style/MyTextViewStyle</item>
</style>
在您的layout.xml
文件中。
<TextView
android:focusable="true"
android:focusableInTouchMode="true"
android:id="@+id/text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="-5dp"
android:textAllCaps="true" />
注意:如果布局中只有一个TextView
,这将有效。
如果您在单个布局中将许多TextView作为选取框,那么请查看此示例Android-MarqueeView.
答案 1 :(得分:0)
我猜测android:ellipsize
不是文本样式元素,因此它不会继承android:textViewStyle
。
只需将MyTextViewStyle
作为样式添加到TextView
即可查看我的猜测。如果这是问题,您必须单独或以样式添加android:ellipsize
属性。
答案 2 :(得分:-1)
试试这个:
<TextView
android:focusable="true"
android:focusableInTouchMode="true"
android:id="@+id/text_view"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="-5dp"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true"
android:textAllCaps="true" />
只有当文本长度大于scree宽度时,和选框效果才会起作用。