Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android中动态创建的UI组件的文本大小_Android - Fatal编程技术网

Android中动态创建的UI组件的文本大小

Android中动态创建的UI组件的文本大小,android,Android,我的活动中有一个表格布局。这里有一排 <TableRow android:id="@+id/row" android:layout_width="fill_parent" android:layout_height="wrap_content" > <TextView android:id="@+id/date_won" android:layout_wid

我的活动中有一个
表格布局
。这里有一排

    <TableRow
        android:id="@+id/row"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/date_won"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/date_won"
            android:textColor="@color/white"
            android:textSize="12sp" />

        <TextView
            android:id="@+id/prize_won"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/amount_won"
            android:textColor="@color/white"
            android:textSize="12sp" />

        <TextView
            android:id="@+id/claimed_or_not"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/claimed_or_not"
            android:textColor="@color/white"
            android:textSize="12sp" />
    </TableRow>

    <TableRow
        android:id="@+id/row_content"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:gravity="center_horizontal" >

        <TextView
            android:id="@+id/date_won_content"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/hyphen"
            android:textColor="@color/white"
            android:textSize="12sp" />

        <TextView
            android:id="@+id/prize_won_content"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/hyphen"
            android:textColor="@color/white"
            android:textSize="12sp" />

        <TextView
            android:id="@+id/claimed_or_not_content"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/hyphen"
            android:textColor="@color/white"
            android:textSize="12sp" />
    </TableRow>

下面的代码在运行时根据数据库表中的行数添加表行

    luckyDrawHisotry = (TableLayout) findViewById(R.id.table);
    contentRow = (TableRow) findViewById(R.id.row_content);     
    LayoutParams contentRowLayoutParams = contentRow.getLayoutParams();
    dateText = (TextView) findViewById(R.id.date_won_content);
    LayoutParams dateLayoutParams = dateText.getLayoutParams();
    prizeText = (TextView) findViewById(R.id.prize_won_content);
    LayoutParams prizeLayoutParams = prizeText.getLayoutParams();
    claimedOrNot = (TextView) findViewById(R.id.claimed_or_not_content);
    LayoutParams claimedLayoutParams = claimedOrNot.getLayoutParams();

            if (prizeDao.loadAll().size() > 0) {
        Prize prize = prizeDao.loadAll().get(0); 
        dateText.setText(Utils.stringFromDate(prize.getWinningDate()));
        prizeText.setText(prize.getPrizeName());
        if(prize.getPrizeRecieved())
            claimedOrNot.setText("yes");
        else
            claimedOrNot.setText("no");
    } 

    if (prizeDao.loadAll().size() > 1){     
        DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);
        int pixelSize = (int) (12 * dm.scaledDensity);
        for (int i = 1; i < prizeDao.loadAll().size(); i++) {
            Prize prize = prizeDao.loadAll().get(i); 
            TableRow row = new TableRow(this); 
            lastRowId = lastRowId + 10;
            row.setLayoutParams(contentRowLayoutParams);
            row.setId(lastRowId);
            TextView dText = new TextView(this);
            dText.setLayoutParams(dateLayoutParams);
            dText.setTextSize(pixelSize);
            dText.setTextColor(getResources().getColor(R.color.white));
            TextView pText = new TextView(this);
            pText.setLayoutParams(prizeLayoutParams);
            pText.setTextSize(pixelSize);
            pText.setTextColor(getResources().getColor(R.color.white));
            TextView cText = new TextView(this);
            cText.setLayoutParams(claimedLayoutParams);
            cText.setTextSize(pixelSize);
            cText.setTextColor(getResources().getColor(R.color.white));
            dText.setText(Utils.stringFromDate(prize.getWinningDate()));
            pText.setText(prize.getPrizeName());
            if(prize.getPrizeRecieved())
                cText.setText("yes");
            else
                cText.setText("no");
            row.addView(dText);
            row.addView(pText);
            row.addView(cText);
            luckyDrawHisotry.addView(row);
        }
    }
luckyDrawHisotry=(TableLayout)findViewById(R.id.table);
contentRow=(TableRow)findViewById(R.id.row\u content);
LayoutParams contentRowLayoutParams=contentRow.getLayoutParams();
dateText=(TextView)findViewById(R.id.date\u won\u content);
LayoutParams dateLayoutParams=dateText.getLayoutParams();
prizeText=(TextView)findViewById(R.id.prize\u won\u内容);
LayoutParams prizeLayoutParams=prizeText.getLayoutParams();
claimedOrNot=(TextView)findViewById(R.id.claimedOrNot内容);
LayoutParams claimedLayoutParams=claimedOrNot.getLayoutParams();
如果(prizeDao.loadAll().size()>0){
Prize-Prize=prizeDao.loadAll().get(0);
dateText.setText(Utils.stringFromDate(prize.getWinningDate());
prizeText.setText(prize.getPrizeName());
if(prize.getPrizeRecieved())
claimdornot.setText(“是”);
其他的
claimdornot.setText(“否”);
} 
如果(prizeDao.loadAll().size()>1){
DisplayMetrics dm=新的DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int pixelSize=(int)(12*dm.标度密度);
对于(inti=1;i
我在xml文件中为表创建了第一行,以便可以比较动态创建的行和作为xml创建的行

结果如下


如您所见,由代码添加的行比由xml创建的行大。我做错什么了吗?

你想要
12dip

float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 12, 
                                        getResources().getDisplayMetrics());
来自
TypedValue.applyDimension的文档

将包含维度的未打包复杂数据值转换为其 最终浮点值。这两个参数的单位和值如下所示 在类型_维度中

编辑:直到现在我才意识到您在布局中使用了
sp
。要获取
12sp
,只需将第一个参数更改为:
COMPLEX\u UNIT\u SP

float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 12, 
                                        getResources().getDisplayMetrics());
您还可以使用带有两个参数的setTextSize:

setTextSize( TypedValue.COMPLEX_UNIT_PX, 12);

其中第一个是单元。您可以找到文档

结果仍然是一样的。抱歉,现在我才意识到您在布局中使用的是
sp
,而不是
dip
。我会修改我的回答是的。我正在使用sp。感谢您的帮助。错误仍然发生,但当我将文本大小设置为6时,它起了作用。这很奇怪。你能试试我上次编辑的
setTextSize(TypedValue.COMPLEX\u UNIT\u PX,12)