17

我用PagerTabStripinViewPager来显示每一页的标题。这是我的 XML 代码:

<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:background="@drawable/bg">

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
    >
    <android.support.v4.view.PagerTabStrip
            android:id="@+id/pager_title_strip"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="top"
            android:background="#33b5e5"
            android:textColor="#a4c639"
            android:paddingTop="4dp"
            android:paddingBottom="4dp" />
    </android.support.v4.view.ViewPager>

</RelativeLayout>

我想将 textStyle 设置为粗体,PagerTabStrip如下所示 android:textStyle="bold":但这在PagerTabStrip. 似乎它只有textcolor文本属性。我可以通过什么方式将样式设置为粗体?

4

3 回答 3

43

您需要做的是为文本创建样式,然后使用 android:textAppearance 属性...

也许是这样的:

 <style name="PagerTabStripText">
      <item name="android:textSize">14sp</item>
      <item name="android:textStyle">bold</item>
      <item name="android:textColor">#a4c639</item>
 </style>

然后在您的 PagerTabStrip XML 中执行以下操作:

 <android.support.v4.view.PagerTabStrip
        android:id="@+id/pager_title_strip"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="top"
        android:background="#33b5e5"
        android:paddingTop="4dp"
        android:paddingBottom="4dp" 
        android:textAppearance="@style/PagerTabStripText"/>
于 2012-11-16T21:46:52.097 回答
4

PagerTabStrip 不接受 textAppearance。

就像上面的@Justin 所说,但是在 xml 上:

style="@style/PagerTabStripText"

不是:

android:textAppearance="@style/PagerTabStripText"

于 2014-09-11T13:57:15.097 回答
2

如果您想将中心选项卡标题设置为与其他选项卡不同的样式,则需要使用反射:

try {
    final Class pagerTitleStripClass = PagerTitleStrip.class;
    final Field mCurrTextField = pagerTitleStripClass.getDeclaredField("mCurrText");
    mCurrTextField.setAccessible(true);

    // mTitle is my class's PagerTabStrip member variable
    final TextView mCurrText = (TextView) mCurrTextField.get(mTitle);
    mCurrText.setTypeface(Typeface.DEFAULT_BOLD);
} catch (final Exception e) {
    Log.w(TAG, "Exception when styling currently selected title!", e);
}

不幸的是,当Android 支持库的更新发布时,此解决方案可能不再起作用(因为这是PagerTitleStrip类的来源)。特别是,此代码示例适用于修订版 20

于 2014-10-08T18:04:11.277 回答