2011-10-08 96 views
0

我正在开发Sudoku游戏,并且遇到了textViews高度的问题。和任何Sudoku一样,用户可以选择输入一个数字或者提示一些提示。数字与Fontsize 14一起工作良好,但是当我将提示字体大小更改为7(dip或sp)时,尽管周围有很多空间,但textView高度增加了(对于字体大小6甚至1行文本)。无论文本大小如何修复textView高度。降低字体大小时TextView高度增加

这里是布局部分:

<TableLayout android:id="@+id/tableLayout1" 
    android:layout_marginTop="5dip" android:layout_gravity="center_horizontal" android:layout_height="wrap_content" android:layout_width="wrap_content"> 
    <TableRow android:layout_width="wrap_content" android:id="@+id/TableRow01" android:layout_height="wrap_content"> 
     <TextView android:typeface="monospace" android:drawableBottom="@drawable/line_h" 
      android:drawableRight="@drawable/line_v" android:digits="@string/inpt" 
      android:width="34dip" android:text="1" android:drawableTop="@drawable/line_h" 
      android:drawableLeft="@drawable/line_v" android:gravity="center" 
      android:layout_width="fill_parent" android:textColor="@android:color/black" 
      android:id="@+id/TV00" android:clickable="true" 
      android:layout_height="fill_parent" android:height="34dip"></TextView> 
     <TextView android:typeface="monospace" android:drawableBottom="@drawable/line_h" 
      android:digits="@string/inpt" android:width="30dip" android:text="2" 
      android:drawableTop="@drawable/line_h" android:gravity="center" 
      android:layout_width="fill_parent" android:textColor="@android:color/black" 
      android:id="@+id/TV01" android:clickable="true" 
      android:layout_height="fill_parent" android:height="34dip"></TextView> 
     <TextView android:typeface="monospace" android:drawableBottom="@drawable/line_h" 
      android:drawableRight="@drawable/line_v" android:digits="@string/inpt" 
      android:width="34dip" android:text="2" android:drawableTop="@drawable/line_h" 
      android:drawableLeft="@drawable/line_v" android:gravity="center" 
      android:layout_width="fill_parent" android:textColor="@android:color/black" 
      android:id="@+id/TV02" android:clickable="true" 
      android:layout_height="fill_parent" android:height="34dip"></TextView> 
     <TextView android:typeface="monospace" android:drawableBottom="@drawable/line_h" 
      android:drawableRight="@drawable/line_v" android:digits="@string/inpt" 
      android:width="34dip" android:text="1" android:drawableTop="@drawable/line_h" 
      android:drawableLeft="@drawable/line_v" android:gravity="center" 
      android:layout_width="fill_parent" android:textColor="@android:color/black" 
      android:id="@+id/TV03" android:paddingLeft="1dip" android:clickable="true" 
      android:layout_height="fill_parent" android:height="34dip"></TextView> 
     <TextView android:typeface="monospace" android:drawableBottom="@drawable/line_h" 
      android:digits="@string/inpt" android:width="30dip" android:text="2" 
      android:drawableTop="@drawable/line_h" android:gravity="center" 
      android:layout_width="fill_parent" android:textColor="@android:color/black" 
      android:id="@+id/TV04" android:clickable="true" 
      android:height="34dip" android:layout_height="fill_parent"></TextView> 
     <TextView android:typeface="monospace" android:drawableBottom="@drawable/line_h" 
      android:drawableRight="@drawable/line_v" android:digits="@string/inpt" 
      android:width="34dip" android:text="2" android:drawableTop="@drawable/line_h" 
      android:drawableLeft="@drawable/line_v" android:gravity="center" 
      android:layout_width="fill_parent" android:textColor="@android:color/black" 
      android:id="@+id/TV05" android:clickable="true" 
      android:layout_height="fill_parent" android:height="34dip"></TextView> 
     <TextView android:typeface="monospace" android:drawableBottom="@drawable/line_h" 
      android:drawableRight="@drawable/line_v" android:digits="@string/inpt" 
      android:width="34dip" android:text="1" android:drawableTop="@drawable/line_h" 
      android:drawableLeft="@drawable/line_v" android:gravity="center" 
      android:layout_width="fill_parent" android:textColor="@android:color/black" 
      android:id="@+id/TV06" android:paddingLeft="1dip" android:clickable="true" 
      android:layout_height="fill_parent" android:height="34dip"></TextView> 
     <TextView android:typeface="monospace" android:drawableBottom="@drawable/line_h" 
      android:digits="@string/inpt" android:width="30dip" android:text="2" 
      android:drawableTop="@drawable/line_h" android:gravity="center" 
      android:layout_width="fill_parent" android:textColor="@android:color/black" 
      android:id="@+id/TV07" android:clickable="true" 
      android:layout_height="fill_parent" android:height="34dip"></TextView> 
     <TextView android:typeface="monospace" android:drawableBottom="@drawable/line_h" 
      android:drawableRight="@drawable/line_v" android:digits="@string/inpt" 
      android:width="34dip" android:drawableTop="@drawable/line_h" 
      android:drawableLeft="@drawable/line_v" android:layout_width="fill_parent" android:textColor="@android:color/black" 
      android:id="@+id/TV08" android:clickable="true" 
      android:layout_height="fill_parent" android:height="34dip" android:text="1 2 3"></TextView> 
    </TableRow> 
    <TableRow android:layout_width="wrap_content" android:id="@+id/TableRow02" 
     android:layout_height="wrap_content"> 
     <TextView android:typeface="monospace" android:drawableRight="@drawable/line_v" 
      android:digits="@string/inpt" android:width="32dip" android:text="1" 
      android:drawableLeft="@drawable/line_v" android:gravity="center" 
      android:layout_width="fill_parent" android:textColor="@android:color/black" 
      android:id="@+id/TV10" android:clickable="true" 
      android:layout_height="fill_parent" android:height="32dip"></TextView> 
     <TextView android:typeface="monospace" android:digits="@string/inpt" android:width="30dip" 
      android:text="2" android:gravity="center" android:layout_width="fill_parent" 
      android:textColor="@android:color/black" android:id="@+id/TV11" 
      android:clickable="true" android:layout_height="fill_parent" 
      android:height="32dip"></TextView> 
     <TextView android:typeface="monospace" android:drawableRight="@drawable/line_v" 
      android:digits="@string/inpt" android:width="32dip" android:text="2" 
      android:drawableLeft="@drawable/line_v" android:gravity="center" 
      android:layout_width="fill_parent" android:textColor="@android:color/black" 
      android:id="@+id/TV12" android:clickable="true" 
      android:layout_height="fill_parent" android:height="32dip"></TextView> 
     <TextView android:typeface="monospace" android:drawableRight="@drawable/line_v" 
      android:digits="@string/inpt" android:width="32dip" android:text="1" 
      android:drawableLeft="@drawable/line_v" android:gravity="center" 
      android:layout_width="fill_parent" android:textColor="@android:color/black" 
      android:id="@+id/TV13" android:paddingLeft="1dip" android:clickable="true" 
      android:layout_height="fill_parent" android:height="32dip"></TextView> 
     <TextView android:typeface="monospace" android:digits="@string/inpt" android:width="30dip" 
      android:text="2" android:gravity="center" android:layout_width="fill_parent" 
      android:textColor="@android:color/black" android:id="@+id/TV14" 
      android:clickable="true" android:layout_height="fill_parent" 
      android:height="32dip"></TextView> 
     <TextView android:typeface="monospace" android:drawableRight="@drawable/line_v" 
      android:digits="@string/inpt" android:width="34dip" android:text="2" 
      android:drawableLeft="@drawable/line_v" android:gravity="center" 
      android:layout_width="fill_parent" android:textColor="@android:color/black" 
      android:id="@+id/TV15" android:clickable="true" 
      android:layout_height="fill_parent" android:height="32dip"></TextView> 
     <TextView android:typeface="monospace" android:drawableRight="@drawable/line_v" 
      android:digits="@string/inpt" android:width="34dip" android:text="1" 
      android:drawableLeft="@drawable/line_v" android:gravity="center" 
      android:layout_width="fill_parent" android:textColor="@android:color/black" 
      android:id="@+id/TV16" android:paddingLeft="1dip" android:clickable="true" 
      android:layout_height="fill_parent" android:height="32dip"></TextView> 
     <TextView android:typeface="monospace" android:digits="@string/inpt" android:width="30dip" 
      android:text="2" android:gravity="center" android:layout_width="fill_parent" 
      android:textColor="@android:color/black" android:id="@+id/TV17" 
      android:clickable="true" android:layout_height="fill_parent" 
      android:height="32dip"></TextView> 
     <TextView android:typeface="monospace" android:drawableRight="@drawable/line_v" 
      android:digits="@string/inpt" android:width="34dip" android:text="2" 
      android:drawableLeft="@drawable/line_v" android:gravity="center" 
      android:layout_width="fill_parent" android:textColor="@android:color/black" 
      android:id="@+id/TV18" android:clickable="true" 
      android:layout_height="fill_parent" android:height="32dip"></TextView> 
    </TableRow> 
+0

你能后的你有大小14和大小7字体看到的截图? – slayton

+0

@slayton:对不起,我是stackoverflow的新用户,我目前尚未发布图片。但是,如果我更改了textSize(在运行时或在布局查看器中),则整行的高度会增加。 –

+0

考虑使用gridview而不是tableview – slayton

回答

0

我找到了解决我的问题,而无需重做我的代码&设计与GridView控件(感谢斯雷顿的建议,但我发现一个更容易的解决办法)。

我不完全理解为什么,但是在使用textviews的属性后,我发现当我将一个textview的textsize更改为7(或其他任何实际值)时,我需要将其layoutheight更改为Fill_Parent(但使用layoutheight Wrap_Content将所有textView保留在大小为14的行中。我以编程方式执行此操作。新的布局是

<TableLayout android:id="@+id/tableLayout1" 
    android:layout_marginTop="5dip" android:layout_gravity="center_horizontal" android:layout_height="wrap_content" android:layout_width="wrap_content"> 
    <TableRow android:layout_width="fill_parent" android:id="@+id/TableRow01" android:layout_height="wrap_content"> 
     <TextView android:typeface="monospace" android:drawableBottom="@drawable/line_h" 
      android:drawableRight="@drawable/line_v" android:digits="@string/inpt" 
      android:width="34dip" android:text="1" android:drawableTop="@drawable/line_h" 
      android:drawableLeft="@drawable/line_v" android:gravity="center" 
      android:layout_width="fill_parent" android:textColor="@android:color/black" 
      android:id="@+id/TV00" android:clickable="true" 
      android:height="34dip" android:layout_height="wrap_content"></TextView> 
     <TextView android:typeface="monospace" android:drawableBottom="@drawable/line_h" 
      android:digits="@string/inpt" android:width="30dip" android:text="2" 
      android:drawableTop="@drawable/line_h" android:gravity="center" 
      android:layout_width="fill_parent" android:textColor="@android:color/black" 
      android:id="@+id/TV01" android:clickable="true" 
      android:height="34dip" android:layout_height="wrap_content"></TextView> 
     <TextView android:typeface="monospace" android:drawableBottom="@drawable/line_h" 
      android:drawableRight="@drawable/line_v" android:digits="@string/inpt" 
      android:width="34dip" android:text="2" android:drawableTop="@drawable/line_h" 
      android:drawableLeft="@drawable/line_v" android:gravity="center" 
      android:layout_width="fill_parent" android:textColor="@android:color/black" 
      android:id="@+id/TV02" android:clickable="true" 
      android:height="34dip" android:layout_height="wrap_content"></TextView> 
     <TextView android:typeface="monospace" android:drawableBottom="@drawable/line_h" 
      android:drawableRight="@drawable/line_v" android:digits="@string/inpt" 
      android:width="34dip" android:text="1" android:drawableTop="@drawable/line_h" 
      android:drawableLeft="@drawable/line_v" android:gravity="center" 
      android:layout_width="fill_parent" android:textColor="@android:color/black" 
      android:id="@+id/TV03" android:paddingLeft="1dip" android:clickable="true" 
      android:height="34dip" android:layout_height="wrap_content"></TextView> 
     <TextView android:typeface="monospace" android:drawableBottom="@drawable/line_h" 
      android:digits="@string/inpt" android:width="30dip" android:text="2" 
      android:drawableTop="@drawable/line_h" android:gravity="center" 
      android:layout_width="fill_parent" android:textColor="@android:color/black" 
      android:id="@+id/TV04" android:clickable="true" 
      android:height="34dip" android:layout_height="wrap_content"></TextView> 
     <TextView android:typeface="monospace" android:drawableBottom="@drawable/line_h" 
      android:drawableRight="@drawable/line_v" android:digits="@string/inpt" 
      android:width="34dip" android:text="2" android:drawableTop="@drawable/line_h" 
      android:drawableLeft="@drawable/line_v" android:gravity="center" 
      android:layout_width="fill_parent" android:textColor="@android:color/black" 
      android:id="@+id/TV05" android:clickable="true" 
      android:height="34dip" android:layout_height="wrap_content"></TextView> 
     <TextView android:typeface="monospace" android:drawableBottom="@drawable/line_h" 
      android:drawableRight="@drawable/line_v" android:digits="@string/inpt" 
      android:width="34dip" android:text="1" android:drawableTop="@drawable/line_h" 
      android:drawableLeft="@drawable/line_v" android:gravity="center" 
      android:textColor="@android:color/black" 
      android:id="@+id/TV06" android:paddingLeft="1dip" android:clickable="true" 
      android:height="34dip" android:layout_width="fill_parent" android:layout_height="wrap_content"></TextView> 
     <TextView android:typeface="monospace" android:drawableBottom="@drawable/line_h" 
      android:digits="@string/inpt" android:width="30dip" android:drawableTop="@drawable/line_h" android:textColor="@android:color/black" 
      android:id="@+id/TV07" android:clickable="true" 
      android:height="34dip" android:layout_width="fill_parent" android:maxHeight="34dip" android:maxWidth="30dip" android:gravity="center" android:text="2" android:layout_height="wrap_content"></TextView> 
     <TextView android:typeface="monospace" android:drawableBottom="@drawable/line_h" 
      android:drawableRight="@drawable/line_v" android:digits="@string/inpt" 
      android:width="34dip" android:drawableTop="@drawable/line_h" 
      android:drawableLeft="@drawable/line_v" android:textColor="@android:color/black" 
      android:id="@+id/TV08" android:clickable="true" 
      android:height="34dip" android:maxHeight="34dip" android:layout_width="fill_parent" android:gravity="center" android:text="2" android:layout_height="wrap_content"></TextView> 
    </TableRow> 

我使用代码来改变大小&的layoutheight在一起:

tv.setTextSize(7); 
tv.setLayoutParams(new TableRow.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); 


    tv.setTextSize(14); 
tv.setLayoutParams(new TableRow.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));