Java android:调用Button.setText()会导致不希望的按钮重新定位
当我调用Java android:调用Button.setText()会导致不希望的按钮重新定位,java,android,button,view,tablelayout,Java,Android,Button,View,Tablelayout,当我调用Button.setText(String)时,Buttons的TableLayout会重新定位所有Button对象,我遇到这个问题。我没有指出应该移动视图。。。我真的不想这样。如果有人知道如何防止这些视图移动(如果可能的话,没有太多麻烦),请告诉我 我正在使用一些非正统的方法来设置屏幕。代码如下: 静态网格布局.xml: <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://
Button.setText(String)
时,Button
s的TableLayout
会重新定位所有Button
对象,我遇到这个问题。我没有指出应该移动视图
。。。我真的不想这样。如果有人知道如何防止这些视图
移动(如果可能的话,没有太多麻烦),请告诉我
我正在使用一些非正统的方法来设置屏幕。代码如下:
静态网格布局.xml:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:stretchColumns="*"
android:gravity="center">
<TableRow android:layout_height="fill_parent"
android:layout_width="fill_parent">
<Button android:id="@+id/btn1"
android:layout_width="100dip"
android:layout_height="80dip"
android:gravity="center"
android:ellipsize="marquee"/>
<Button android:id="@+id/btn2"
android:layout_width="100dip"
android:layout_height="80dip"
android:gravity="center"
android:ellipsize="marquee"/>
<Button android:id="@+id/btn3"
android:layout_width="100dip"
android:layout_height="80dip"
android:gravity="center"
android:ellipsize="marquee"/>
</TableRow>
<TableRow>
<Button android:id="@+id/btn4"
android:layout_width="100dip"
android:layout_height="80dip"
android:gravity="center"
android:ellipsize="marquee"/>
<Button android:id="@+id/btn5"
android:layout_width="100dip"
android:layout_height="80dip"
android:gravity="center"
android:ellipsize="marquee"/>
<Button android:id="@+id/btn6"
android:layout_width="100dip"
android:layout_height="80dip"
android:gravity="center"
android:ellipsize="marquee"/>
</TableRow>
<TableRow>
<Button android:id="@+id/btn7"
android:layout_width="100dip"
android:layout_height="80dip"
android:gravity="center"
android:ellipsize="marquee"/>
<Button android:id="@+id/btn8"
android:layout_width="100dip"
android:layout_height="80dip"
android:gravity="center"
android:ellipsize="marquee"/>
<Button android:id="@+id/btn9"
android:layout_width="100dip"
android:layout_height="80dip"
android:gravity="center"
android:ellipsize="marquee"/>
</TableRow>
<TableRow>
<Button android:id="@+id/btn10"
android:layout_width="100dip"
android:layout_height="80dip"
android:gravity="center"
android:ellipsize="marquee"/>
<Button android:id="@+id/btn11"
android:layout_width="100dip"
android:layout_height="80dip"
android:gravity="center"
android:ellipsize="marquee"/>
<Button android:id="@+id/btn12"
android:layout_width="100dip"
android:layout_height="80dip"
android:gravity="center"
android:ellipsize="marquee"/>
</TableRow>
<TableRow>
<Button android:id="@+id/btn13"
android:layout_width="100dip"
android:layout_height="80dip"
android:gravity="center"
android:ellipsize="marquee"/>
<Button android:id="@+id/btn14"
android:layout_width="100dip"
android:layout_height="80dip"
android:gravity="center"
android:ellipsize="marquee"/>
<Button android:id="@+id/btn15"
android:layout_width="100dip"
android:layout_height="80dip"
android:gravity="center"
android:ellipsize="marquee"/>
</TableRow>
<TableRow>
<Button android:id="@+id/btn16"
android:layout_width="100dip"
android:layout_height="80dip"
android:gravity="center"
android:ellipsize="marquee"/>
<Button android:id="@+id/btn17"
android:layout_width="100dip"
android:layout_height="80dip"
android:gravity="center"
android:ellipsize="marquee"/>
<Button android:id="@+id/btn18"
android:layout_width="100dip"
android:layout_height="80dip"
android:gravity="center"
android:ellipsize="marquee"/>
</TableRow>
<TableRow>
<Button android:id="@+id/btn19"
android:layout_width="100dip"
android:layout_height="80dip"
android:gravity="center"
android:ellipsize="marquee"/>
<Button android:id="@+id/btn20"
android:layout_width="100dip"
android:layout_height="80dip"
android:gravity="center"
android:ellipsize="marquee"/>
<Button android:id="@+id/btn21"
android:layout_width="100dip"
android:layout_height="80dip"
android:gravity="center"
android:ellipsize="marquee"/>
</TableRow>
</TableLayout>
在onResume()
override中指向代码底部。以下是图像中不希望出现的行为。按钮
s仅在调用setText()时获得延迟的y偏移量。如果调用setText(“”[空字符串],则按钮的位置不会更改。有什么好处
事实证明,这是表格布局的一个已知问题。这已经被报道了好几次,回首到2010年初。您可以在此处找到错误报告: 如果你有什么要补充的,或者你有一个相关的问题,请发布一个错误报告
<>强>修复< /强>:为了修复这个问题,我在填充网格的时候用新的线填充空白按钮。这样所有的东西都被抵消了。漂亮、整洁,甚至。尝试更改正在写入按钮的文本,如果setText(“”)不更改布局,我怀疑按钮对于插入的文本量来说太小 另外,在第一个tablerow中,删除android:layout\u height=“fill\u parent”
该行将尝试使该行填充整个表格,将其更改为换行内容,如果文本不太适合按钮,则布局不应移动。更新:y偏移似乎与按钮上的文本行数成正比。文本行越多,越往南移动。
query = "SELECT * FROM "+DbSchema.ProductSchema.TABLE_NAME+
" ORDER BY "+DbSchema.ProductSchema.COLUMN_PRIORITY+" ASC";
updateList(listQuery(query));
fillPage(mPage);
setContentView(mPage);