1

コードを使用して TableLayout を動的に作成し、列間にマージンを設定したいと考えています。TableRows に含まれるコンテンツの唯一のタイプは TextViews です。

私の意図は、android:layout_marginRight各 TextView に単純なものを配置することでした。しかし、コードではなくxmlでこれを定義したいと思います。

私が試したこと:

コード:

txtView.setTextAppearance(context, R.style.TableTextView);
txtView.setText(content);
tableRow.addView(txtView);

XML

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="TableTextView">
      <item name="android:textAppearance">?android:attr/textAppearanceLarge</item>
      <item name="android:textStyle">bold</item>
      <item name="android:layout_marginRight">5dip</item>
  </style>
</resources>

何が起こるのですか:

XMLのlayout_marginRightセットは機能しませんが、XML のtextAppearanceandtextStyleセットは機能します。setTextAppearance-method は、TextView にマージンを割り当てるための間違った方法だと思いますか? Java コードの代わりに XML を介して (上記で試したように) これを行うことができれば、本当に素晴らしいことです。

ありがとうございました!

4

2 に答える 2

1

これは、スタイルを TextView 要素ではなくテキスト自体に設定しているためです。XML で要素スタイルを設定する必要があります。コードからこれを実現することも可能ですが、XML レイアウト ファイルで実現するのが最善だと思います。

何かのようなもの :

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    style="@style/mTableTextView" /> 

コードからの設定については、私は専門家ではありませんが、何とか膨らませることができることを理解しました。This、 And Thisの質問を確認してください。

于 2012-05-29T10:40:29.780 に答える
1

段間に余白をつけたい

android.widget.TableRow.LayoutParams param = new android.widget.TableRow.LayoutParams();
param.rightMargin = Converter.dpToPixel(10, getContext()); // right-margin = 10dp
button.setLayoutParams(param);

// Converter:
private static Float scale;
public static int dpToPixel(int dp, Context context) {
    if (scale == null)
        scale = context.getResources().getDisplayMetrics().density;
    return (int) ((float) dp * scale);
}

さまざまな値テーブル パラメータを設定できます。

于 2012-05-29T10:40:50.850 に答える