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
Java android:调用Button.setText()会导致不希望的按钮重新定位_Java_Android_Button_View_Tablelayout - Fatal编程技术网

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);