如何从代码中设置 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 <?xml version="1.0" encoding="utf-8"?> <resources> <item name="android.R.attr.textAppearance">@null</item> <item name="android.R.attr.textColor">#FFFF0000</item> <item name="android:textSize">30sp</item> </resources>
但没有任何变化,没有崩溃,没有例外
你有 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 的文本颜色、文本大小?的主要内容,如果未能解决你的问题,请参考以下文章
如何从图库和相机的 imageview 中设置图像? [复制]