在Android中创建样式以在所有TextView上显示选框效果

时间:2014-03-15 13:32:56

标签: android android-layout android-styles

我想在我的应用程序中的每个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示例中没有这些上升,它将不会滚动...

所以我需要这些属性,但我无法让它们通过样式工作......任何人都有答案吗?

3 个答案:

答案 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宽度时,

和选框效果才会起作用。