1

我想在 ScrollView 中的 Tablelayout 中以编程方式设置按钮的大小。

这是我的 XML 文件

<ScrollView 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:scrollbarFadeDuration="1000"
    android:scrollbarSize="12dip" >
<TableLayout 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/tablay"
    tools:context=".MainActivity" 
    >
    <Button
        android:id="@+id/start"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/open" />
    <TableRow>
          <ImageButton
            android:layout_width="16sp"
            android:layout_height="16sp"
            android:contentDescription="@string/Delete"
            android:src="@drawable/ic_delete" />

    </TableRow>
</TableLayout> 
</ScrollView>

这是我的java文件

private void setList(){ 
/* Create a new row to be added. */
     TableRow tr;
     ImageButton delbtn;
     int btnsize;
    tr = new TableRow(this);
    tr.setLayoutParams(new LayoutParams(
    LayoutParams.MATCH_PARENT, 
    LayoutParams.WRAP_CONTENT));
    delbtn = new ImageButton(this);
    //delbtn.setText("Delete");
    //delbtn.setTextSize(TypedValue.COMPLEX_UNIT_SP,sys_def_char_font);
    btnsize = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, sys_def_char_font, getResources().getDisplayMetrics());
    delbtn.setId(i);
    delbtn.setImageResource(R.drawable.ic_delete);
    delbtn.setLayoutParams(new LayoutParams(btnsize,btnsize));
    tr.addView(delbtn);
    tablay.addView(tr);
}

如果我在 xml 文件中相互添加按钮,那么一切都很好。

但我尝试以编程方式添加它。因为我想让我以编程方式添加的按钮更小,所以我使用 setLayoutParams 来设置参数。

但是,我以编程方式添加的按钮在 setLayoutParams() 之后丢失了。

拜托,谁能告诉我哪里错了?

4

1 回答 1

1

I ran your code by changing sys_def_char_font to 5 and it worked fine. I can see the TableRow added with the button.

I reckon the problem is in the following line...

btnsize = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, sys_def_char_font, getResources().getDisplayMetrics());

What is sys_def_char_font? Where have you declared it?

I suggest you check what sys_def_char_font is. The DOCS says it has to be a float.

Hope this helps.

于 2013-07-25T06:24:24.053 回答