【问题标题】:android tablelayout text pixelatedandroid tablelayout 文本像素化
【发布时间】:2014-03-27 10:44:06
【问题描述】:

我正在以编程方式将单元格添加到表格视图中:

for(int i=0; i<numRows; i++){
        TableRow tr=new TableRow(mContext);
        tr.setLayoutParams(tableParams);
        for(int j=0; j<numCols; j++){
            LinearLayout ll = new LinearLayout(mContext);
            ll.setOrientation(LinearLayout.VERTICAL);
            ll.setGravity(Gravity.CENTER_HORIZONTAL);

            ImageView iv = new ImageView(mContext);
            LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(30, 30);
            iv.setLayoutParams(layoutParams);
            iv.setBackgroundResource(R.drawable.angry_cat);

            TextView tv = new TextView(mContext);
            tv.setText("some");
            tv.setTextSize(7f);
            tv.setTextColor(Color.WHITE);

            ll.addView(iv);
            ll.addView(tv);
            tr.addView(ll);
        }
        table.addView(tr);
    }

但是文本出来像素化了:

我如何定义文本更平滑?

【问题讨论】:

  • 顺便说一句,不要将 Color.WHITE 用于 textColor。你应该这样做: tv.setTextColor(getResources().getColor(android.R.color.white));

标签: android android-tablelayout


【解决方案1】:

从颜色 xml 文件更改您的颜色。 像这样:

颜色.xml

<color name="white">#ffffff</color>

然后获取颜色:

tv.setTextColor(getResources().getColor(R.color.white));

【讨论】:

  • 没有帮助。你有没有注意到你在 XML 中定义了颜色,然后从 android.R 中获取了它?
【解决方案2】:

试试这个:

tv.setTextAppearance(this, android.R.style.TextAppearance_Small);

【讨论】:

    【解决方案3】:

    我认为你的问题出在这个地方:tv.setTextSize(7f); 例如,尝试将值更改为 14,然后响应更改的内容。

    编辑: 你应该使用 7.0f 而不是 7f

    编辑1: 试试这个代码:

    textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.textsize));
    create dimen folder like this res/values/dimensions.xml
    
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    <dimen name="textsize">8sp</dimen>
    </resources>
    

    【讨论】:

    • 7.0f 没有帮助。当然 14 有帮助,但我不希望文本变大。
    • 这取决于屏幕密度,如果您以编程方式设置文本大小,您应该使用 mTextView.setTextSize(textSize * getResources().getDisplayMetrics().density);为您的屏幕密度设置文本
    • 我正在使用nexus 7。尝试过,仍然没有帮助。我应该能够以相同的清晰度显示图标上的文本。它比 7 小得多。
    • tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 7);
    • 也试试这个方法: textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.textsize));像这样创建dimen文件夹 res/values/dimensions.xml 8sp
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多