Android:设置TableRow内容的边距(表示:列之间的边距)

时间:2012-05-29 10:31:14

标签: java android mobile

我通过代码动态创建TableLayout,并希望在列之间设置边距。我的TableRows包含的唯一内容类型是TextViews。

我的目的是在每个TextView上放一个简单的android:layout_marginRight。但我想通过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中设置的textAppearancetextStyle确实有效。我假设setTextAppearance-method是为TextView分配边距的错误方法?如果我能通过XML(就像我上面尝试过的那样)而不是Java代码来做这件事真的很好。

谢谢!

2 个答案:

答案 0 :(得分:1)

这是因为您将样式设置为文本本身而不是TextView元素。 您应该在XML中设置元素样式。也可以从代码中获得这个,但我认为最好在XML Layout文件中这样做。

类似的东西:

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

关于从代码设置,我不是专家,但我知道你可以以某种方式膨胀它。 查看ThisThis个问题。

答案 1 :(得分: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);
}

您可以设置不同的值表参数。