2015-11-18 19 views

答えて

15

あなたのBrowseFragmentHeaderFragmentのプレゼンターとして提供されているandroid.support.v17.leanback.widget.RowHeaderPresenterを使用していることを前提としています。あなたが見ることができるように

<android.support.v17.leanback.widget.RowHeaderView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/row_header" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    style="?rowHeaderStyle" /> 

が、これは通常@style/Widget.Leanback.Row.Headerを指しているrowHeaderStyleと呼ばれるスタイル属性を使用しています:RowHeaderPresenter

は、次のようになりますR.layout.lb_row_headerからレイアウトを膨張させます。あなたはstyles.xmlに次のように置くことによって、これをオーバーライドすることができます。その後、

<style name="MyCustomRowHeaderStyle" parent="Widget.Leanback.Row.Header"> 
    <item name="android:textColor">@color/red</item> 
</style> 

<style name="MyCustomBrowseStyle" parent="Theme.Leanback.Browse"> 
    <item name="rowHeaderStyle">@style/MyCustomRowHeaderStyle</item> 
</style> 

そして、あなたのAndroidManifest.xmlでそれを宣言することによってBrowseFragmentを含むActivityためMyCustomBrowseStyleを使用しています。

3

david.miholaの回答が色に役立ちますが、カスタムフォントの設定にはまだ問題がありました。この質問に遭遇し、これについても困惑する人のために、私の解決策はここにあります:chrisjenx (Calligraphy)によって行われたすばらしい仕事のおかげで、簡単にグローバル(カスタム)フォントを設定できます:

単にあなたのgradle.buildに書道を追加し、Application.onCreate()に次のコードを追加します。

CalligraphyConfig.initDefault(new CalligraphyConfig.Builder() 
         .setDefaultFontPath("fonts/MyCustomFont.ttf") 
         .setFontAttrId(R.attr.fontPath) 
         .build() 
     ); 

、すべての活動では、次の行を追加します。

@Override 
protected void attachBaseContext(Context newBase) { 
    super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase)); 
} 

これは、フォントのトリックを行っています1つのTextViewごとにレイアウトを変更せずに私のために。書道のドキュメンテーションにもいくつかの可能性があります。見てみな。

この質問を見つけて、(カスタム)フォントをグローバルに設定しようとしている他の人に役立つことを祈っています。

3

ダビデの答えに加えて。

rowHeaderStyle(これら二つの断片があなたのBrowseFragmentを構成する)RowFragmentHeaderFragmentのメニュー項目と列のタイトルに両方のスタイルを適用します。

そのスタイル(特にフォントの色)を異ならせる場合は、BrowseFragment::onCreateHeadersFragment()を上書きして、その時点で特定のテーマを適用できます。 )

<style name="AppTheme.Leanback.Browse.Row" parent="@style/Theme.Leanback.Browse"> 
    <item name="rowHeaderStyle">@style/AppTheme.Leanback.Row</item> 
</style> 

<style name="AppTheme.Leanback.Browse.Header" parent="@style/AppTheme.Leanback.Browse.Row"> 
    <item name="rowHeaderStyle">@style/AppTheme.Leanback.Header</item> 
</style> 

<style name="AppTheme.Leanback.Row" parent="Widget.Leanback.Row.Header"> 
    <item name="android:textColor">@color/font_row</item> 
</style> 

<style name="AppTheme.Leanback.Header" parent="Widget.Leanback.Row.Header"> 
    <item name="android:textColor">@color/font_header</item> 
</style> 

2マニフェストであなたの活動にAppTheme.Leanback.Browse.Rowテーマを適用します。

1)styles.xmlにこれらのスタイルを追加します。

3)あなたのBrowseFragmentのヘッダーにAppTheme.Leanback.Browse.Headerテーマを適用します。

// Kotlin snippet 
override fun onCreateHeadersFragment() : HeadersFragment { 
    class CustomHeadersFragment : HeadersFragment() { 
     override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { 
      return super.onCreateView(
        inflater.cloneInContext(ContextThemeWrapper(inflater.context, R.style.AppTheme_Leanback_Browse_Header)), 
        container, 
        savedInstanceState 
      ) 
     } 
    } 

    return CustomHeadersFragment() 
} 
+1

私はどこonCreateHeadersFragment' 'に上書き見つけることができませんでした。どうやら私はleanbackの古いバージョンを実行していた、このメソッドは最近25.3.0に追加されました。 https://developer.android.com/reference/android/support/v17/leanback/app/BrowseFragment.html#onCreateHeadersFragment() – Hless

関連する問題