2013-07-25 4 views
1

Я хочу установить размер кнопки программно в Tablelayout, который находится в 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().

Пожалуйста, может кто-нибудь сказать мне, где не так?

ответ

1

Я запустил ваш код, изменив sys_def_char_font на 5, и он отлично работал. Я вижу, что TableRow добавлен с button.

Я считаю, что проблема в следующей строке ...

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

Что такое sys_def_char_font? Где вы это объявили?

Предлагаю вам проверить, что такое sys_def_char_font. DOCS говорит, что это должно быть float.

Надеюсь, это поможет.

+0

Я объявил sys_def_char_font в самом начале. Это целое значение «20». После того, как я попробовал ваше предложение, я узнал, что размер экрана привел к этой проблеме. В любом случае, спасибо за ответ на мой вопрос. – wizoza68844

+0

@ wizoza68844: Рад ответить помогло. Пожалуйста, не забудьте принять ответ. Благодарю. – neo108

Смежные вопросы