如何从代码中设置 PagerTitleStrip 的文本颜色、文本大小?

Posted

技术标签:

【中文标题】如何从代码中设置 PagerTitleStrip 的文本颜色、文本大小?【英文标题】:How can I set TextColor, TextSize of PagerTitleStrip from code? 【发布时间】:2012-03-29 12:37:49 【问题描述】:

我正在尝试从 pagertitlestrip 设置 textsize 和 textcolor,但找不到方法。

<android.support.v4.view.ViewPager
    android:id="@+id/myPager"
    android:layout_
    android:layout_>

    <android.support.v4.view.PagerTitleStrip
        android:id="@+id/myStrip"
        android:layout_
        android:layout_
        android:layout_gravity="top" />

</android.support.v4.view.ViewPager>

编辑

main.xml

<android.support.v4.view.ViewPager
    android:id="@+id/myPager"
    android:layout_
    android:layout_>

    <android.support.v4.view.PagerTitleStrip
        style="@style/PagerTitleStrip"
        android:id="@+id/myStrip"
        android:layout_
        android:layout_
        android:layout_gravity="top" />

</android.support.v4.view.ViewPager>

style.xml

<style name="PagerTitleStrip">
    <item name="android:textAppearance">@style/PagerTitleStripTextAppearance</item>
</style>

<style name="PagerTitleStripTextAppearance">
    <item name="android:textColor">#FFFFFFFF</item>
    <item name="android:textSize">14sp</item>
</style>

遗憾的是,我没有找到从 AttributeSet 中创建它的方法,得到 Resource NotFound 或 InvalidResource Exception。

【问题讨论】:

您是否只想为PagerTitleStrip 中的文本设置这些属性? 【参考方案1】:

textSize 不能直接用作view.PagerTitleStrip 的 XML 属性。

但是我设法使用 style 属性间接设置它,如下所示:

<android.support.v4.view.PagerTitleStrip
    android:id="@+id/pager_title_strip"
    style="@style/viewPagerTitleStrip" <-- added style attribute here
    android:layout_
    android:layout_
    android:layout_gravity="top"
     />

然后我在styles.xml中定义textSize如下:

<style name="viewPagerTitleStrip">
    <item name="android:layout_width">fill_parent</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:textColor">#FFFFFF</item>
    <item name="android:textSize">14sp</item> <-- my desired text size
</style>

这对我有用。

【讨论】:

这是最好的办法! @Андрей - 这是有效的。并要求“正确检查”作为正确答案。谢谢大家。【参考方案2】:

来自:http://developer.android.com/reference/android/support/v4/view/PagerTitleStrip.html

设置颜色值作为所有显示页面标题的基色:

void setTextColor(int color) 

将默认文本大小设置为给定的单位和值:

void setTextSize(int unit, float size) 

看起来很简单。

PagerTitleStrip titleStrip = (PagerTitleStrip) findViewById(R.id.titleStrip);
titleStrip.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 24);

【讨论】:

【参考方案3】:

我很晚才偶然发现这个问题,但到目前为止,textSize 虽然不在预测选项中,但仍然有效。

<android.support.v4.view.PagerTitleStrip
        android:id="@+id/pager_title_strip"
        android:layout_
        android:layout_
        android:layout_gravity="top"
        android:background="@android:color/holo_blue_dark"
        android:textSize="18sp"

        android:textColor="#ffffff"
        android:paddingTop="4dp"
        android:paddingBottom="4dp" />

【讨论】:

在 Nugat 映像上运行的 Android Studio 3.2.x 和 2019 年仍然可以完美运行。谢谢!【参考方案4】:

看this

final TypedArray a = context.obtainStyledAttributes(attrs, ATTRS);  
final int textColor = a.getColor(1, 0);  
final int textSize = a.getDimensionPixelSize(2, 0);

【讨论】:

public PagerTitleStrip(Context context, AttributeSet attrs) super(context, attrs); (...) 为 PagerTitleStrip 创建 AttributeSet 的任何示例?? 只能从xml创建,看看developer.android.com/reference/android/util/AttributeSet.html和***.com/questions/5316686/…也有帮助grepcode.com/file/repository.grepcode.com/java/ext/… 我写了这个:XmlPullParser parser = getResources().getXml(R.xml.mypagertitlestripattributes); AttributeSet attributes = Xml.asAttributeSet(parser); pagerTitleStrip = new PagerTitleStrip(this, attributes); pagerTitleStrip = (PagerTitleStrip) findViewById(R.id.myStrip); 和 xml &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;resources&gt; &lt;item name="android.R.attr.textAppearance"&gt;@null&lt;/item&gt; &lt;item name="android.R.attr.textColor"&gt;#FFFF0000&lt;/item&gt; &lt;item name="android:textSize"&gt;30sp&lt;/item&gt; &lt;/resources&gt; 但没有任何变化,没有崩溃,没有例外 你有 xml 布局的 PagerTitleStrip 吗? 但是您在标题中要求从代码中执行此操作。在 PagerTitleStrip 的来源中查找属性名称并将它们放置到布局中。也看看你上面的代码!你犯了很容易的错误【参考方案5】:

文本大小,文本颜色未应用于选项卡。我的代码如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:id="@+id/relativeLayout">

<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/pager"
    android:layout_
    android:layout_>

    <android.support.v4.view.PagerTabStrip
        android:id="@+id/pager_title_strip"
        android:layout_
        android:layout_
        android:layout_gravity="top"
        android:background="#33b5e5"
        android:textColor="#fff"
        android:paddingTop="5dp"`enter code here`
        android:paddingBottom="5dp" />

</android.support.v4.view.ViewPager>

【讨论】:

以上是关于如何从代码中设置 PagerTitleStrip 的文本颜色、文本大小?的主要内容,如果未能解决你的问题,请参考以下文章

Ag Grid 如何从代码中设置过滤器服务器端

如何从图库和相机的 imageview 中设置图像? [复制]

如何在本机反应中从平面列表中设置 Json 数组

如何在 Activity Result API 中设置请求代码?

如何从数据源文件中设置 var 值?

如何从 TempTable 中检索值并在局部变量中设置该值