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

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

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

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

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

编辑

main.xml

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

    <android.support.v4.view.PagerTitleStrip
        style="@style/PagerTitleStrip"
        android:id="@+id/myStrip"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        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 中的文本设置这些属性?

标签: android android-viewpager


【解决方案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_width="match_parent"
    android:layout_height="wrap_content"
    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_width="match_parent"
            android:layout_height="50dp"
            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 的任何示例??
    • 我写了这个: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_width="match_parent"
    android:layout_height="match_parent"
    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_width="match_parent"
        android:layout_height="match_parent">
    
        <android.support.v4.view.PagerTabStrip
            android:id="@+id/pager_title_strip"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="top"
            android:background="#33b5e5"
            android:textColor="#fff"
            android:paddingTop="5dp"`enter code here`
            android:paddingBottom="5dp" />
    
    </android.support.v4.view.ViewPager>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-14
      • 2020-08-25
      • 1970-01-01
      相关资源
      最近更新 更多