如何使用此特定属性以编程方式创建 TextView?

Posted

技术标签:

【中文标题】如何使用此特定属性以编程方式创建 TextView?【英文标题】:How create TextView programatically with this specifics Attributes? 【发布时间】:2016-11-11 17:15:00 【问题描述】:

我目前正在这样创建 TextView:

LinearLayout myLayout = (LinearLayout) activity.findViewById(R.id.ll1);
    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT,    LinearLayout.LayoutParams.WRAP_CONTENT);

for(int l=0; l<4; l++)
    
        pairs[l] = new TextView(context);
        pairs[l].setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
        pairs[l].setLayoutParams(lp);
        pairs[l].setId(l);
        pairs[l].setText("asd");
        myLayout.addView(pairs[l]);
    

现在我想将此属性设置为所有 TextView:

FontFamily:草书 SetTextSize 不是 sp 而是 dp(已解决) SetGravity:central_horizo​​ntal(已解决)

当我以编程方式创建 TextView 时,我找不到设置这些属性的方法,我该怎么做?

【问题讨论】:

使用布局参数来调整这些 我这样做是为了调整重力和高度(wrap_content),但是最后两个属性怎么样? 【参考方案1】:

可以使用 setTextSize(TypedValue.COMPLEX_UNIT_DIP, &lt;float&gt;) 设置 dp 中的文本大小 - 请参阅文档 [此处](https://developer.android.com/reference/android/widget/TextView.html#setTextSize(int, float))。

至于字体系列,恐怕我不知道 - 希望其他人可以帮助你:)

【讨论】:

【参考方案2】:

要更改 TextView 的字体系列,请使用 setTypeface

例如:

Typeface tf = Typeface.create("cursive", Typeface.NORMAL);
for(int l=0; l<4; l++)

    pairs[l] = new TextView(context);
    pairs[l].setTypeface(tf);
    ...

另外,这可能感兴趣:How to change fontFamily of TextView in Android

【讨论】:

【参考方案3】:

您可以使用 Typeface 对象设置字体。

TextView tv = new TextView(context);
Typeface face = Typeface.createFromAsset(getAssets(),
       "fonts/filename.ttf");
tv.setTypeface(face);

将字体放入项目的 assets 文件夹中。

【讨论】:

不能使用这个,因为我没有“草书”的 .TFF 文件

以上是关于如何使用此特定属性以编程方式创建 TextView?的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式在 TextView 中设置文本对齐方式

Android 编程:如何以网格方式以编程方式创建各种视图类型

以编程方式设置TextView的布局权重

如何以编程方式添加TextView并在布局中对齐它们

如何将setOnClickListener设置为以编程方式添加的TextView?

以编程方式设置 TextView 的布局权重