繁体   English   中英

在Android中创建样式以在所有TextView上实现字幕效果

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM