10

Android SDKを使用すると、テーブルの行にスタイルを設定する方法がないようです。私は以下と同等のことをしたい:

<TableRow
    style='@style/TableRow_classic' >

コードで。私は次のようなものが欲しいです:

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

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

4

3 に答える 3

13

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

<?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);

理想的ではありませんが、私にとってはうまくいきます

于 2011-10-07T20:44:34.910 に答える
3

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

スタイルを動的に割り当てる方法を理解した人はいますか?

于 2009-08-02T17:50:41.003 に答える
1

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

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

を使用して、ウィジェットのコードでこのスタイルを設定できるようになると考えています

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

ここで(私には)そう見える

  1. AttributeSet set = null;これは、XML インフレータが提供するものだからです。

  2. int[] attrs = R.styleable.MyWidget; 調べたい属性を定義します。

  3. int defStyleAttr = myWidgetStyle;これは、私のテーマで定義された、MyWidget のスタイルへの参照です。これらは両方とも res/values の XML ファイルで定義されています。「myWidgetStyle」は、Android 開発者がコードで使用した名前のパターンに従います。

  4. defStyleRes = 0; これについて考える必要がないことを願っています。

次に、背景色などのプロパティを取得するには、

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

a.recycle();

これはうまくいくようです – とにかく今のところ.

Android ビルド システムは、a.getColor で使用する正しいインデックスを便利に生成し、名前を付けているようR.styleable.MyWidget_backgroundです。私がこの名前を付けたわけではないので、Android はスタイル設定可能な MyWidget に私の XML を使用して名前を付けたに違いありません。

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

ドン

于 2010-09-25T14:11:00.250 に答える