2009-07-17 12 views
7

Android SDKを使用すると、テーブル行にスタイルを設定する方法がないようです。私は以下のコードに相当します:AndroidのTableRowでスタイルを設定する

<TableRow 
    style='@style/TableRow_classic' > 

コードです。私は何か好きです:

TableRow row = new TableRow(this); 
row.setStyle(R.style.TableRow_classic); 

これを見つける方法を知っていますか?

答えて

3

私が知る限り、setStyleメソッドはありません。個々のプロパティを設定して設定することもできますが、それはコントローラロジックからビューを分離する目的に反するものです。悪い。

どのように動的にスタイルを割り当てるのか分かりましたか?

1

私は自分のテーマから取得したスタイルプロパティをコードに設定しようとしています。

自分のテーマからスタイルを使用したいのですが、私のユーザーインターフェイスレイアウトはXMLでウィジェットを定義することなく、カスタムレイアウトビルダーを使用して完全にコードで生成されます。だから私のウィジェットのXMLレイアウトにスタイルを設定することはできません。XMLレイアウトはありません。

私は

TypedArray a = context.obtainStyledAttributes(AttributeSet set, int[] attrs, int defStyleAttr, int defStyleRes) 

を使用して、私のウィジェットのコードでこのスタイルを設定することができることを考えています、これはあるので、ここでは

  1. AttributeSet set = null;こと(私には)そうですXMLインフレータが提供するもの。

  2. は、私が見たい属性を定義します。

  3. int defStyleAttr = myWidgetStyle; MyWindowのスタイルに定義されている参考文献です。これらは両方ともres/valuesのXMLファイルで定義されています。 "myWidgetStyle"はアンドロイドの開発者がコードで使用した名前のパターンに従います。

  4. defStyleRes = 0;私はこれについて考える必要はないと思っています。

その後

Color color = a.getColor(R.styleable.MyWidget_background, R.color.my_default); 

a.recycle(); 

、背景色など、任意のプロパティを取得するために、これははるかにとにかく-SO動作するようには思えません。

アンドロイドビルドシステムは、a.getColorで使用するための適切なインデックスを便利に生成し、その名前はR.styleable.MyWidget_backgroundとなっているようです。私はこの名前を作っていないので、Androidは私のスタイル可能なMyWidgetのためにXMLを使っていなければなりません。

TypedArrayで必要な属性を検索すると正しいインデックスを検索できますが、これは非効率的で、TypedArrayは対処するには不愉快な仕掛けのように見えます。私はそれを突くために非常に長い棒を使用するでしょう!

ドン

12

私はこれを達成するために見つけた最良の解決策は、定義されたスタイルで、テーブルの行を表す「部分的」なレイアウトを作成することです:

<?xml version="1.0" encoding="utf-8"?> 
<TableRow xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    style="@style/tr_withborder" /> 

次に、あなたのコードでそれを膨らませます、動的に使用する:

TableRow tr = (TableRow) getLayoutInflater().inflate(R.layout.partial_table_row, null); 

理想的ではないが、それは私

のために働くん
関連する問題