[英]create style in Android for marquee effect on all TextViews
我想在我的应用程序中对每个textview都使用字幕效果...所以我想我把它放在一种样式中:
<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示例中的这些功能,它将无法滚动...
所以我需要这些属性,但是无法通过样式来使用它们……任何人都有答案吗?
如果可聚焦和focusableInTouchMode没有风格的工作然后从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。
我猜android:ellipsize
不是文本样式元素,因此它不会继承android:textViewStyle
。
只需将MyTextViewStyle
作为样式添加到TextView
即可检查我的猜测。 如果这是问题所在,则必须单独或以样式添加android:ellipsize
属性。
尝试这个 :
<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" />
并且字幕效果仅在文本长度大于卵石宽度时才有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.