1

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

我的意图是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 方法是为 TextView 分配边距的错误方法?如果我可以通过 XML(就像我在上面尝试过的那样)而不是 Java 代码来做到这一点,那就太好了。

谢谢!

4

2 回答 2

1

发生这种情况是因为您将样式设置为文本本身而不是 TextView 元素。您应该在 XML 中设置元素样式。也可以从代码中实现这一点,但我认为最好在 XML 布局文件中做到这一点。

就像是 :

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

关于从代码中设置它,我不是专家,但我知道你可以以某种方式夸大它。看看这个这个问题。

于 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 回答