我遇到这个问题,每当我调用 Button.setText 时,
。我没有给出任何指示 Button
的 TableLayout
就会重新定位所有 Button
对象(字符串)View
应该被移动......而且我真的不希望它这样做。如果有人知道如何防止这些Views
移动(如果可能的话,不会有太多麻烦),请告诉我。
我正在使用一些非正统的方法来获取屏幕设置。这是代码:
static_grid_layout.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>
MainActivity.java:特别感兴趣的部分将在这里:
query = "SELECT * FROM "+DbSchema.ProductSchema.TABLE_NAME+
" ORDER BY "+DbSchema.ProductSchema.COLUMN_PRIORITY+" ASC";
updateList(listQuery(query));
fillPage(mPage);
setContentView(mPage);
朝向 onResume()
覆盖中代码的底部。这是图像中的不良行为。当我调用 setText() 时,按钮仅获得延迟的 y 偏移量。如果我调用 setText("") [空字符串] 按钮的位置不会改变。什么给出?
最佳答案
事实证明这是 TableLayouts 的一个已知问题。早在 2010 年初,这个问题就被报告过多次。您可以在此处找到错误报告:
http://code.google.com/p/android/issues/detail?id=6428
如果您有任何需要添加的内容,或者遇到相关问题,请发布错误报告。
修复:为了解决这个问题,我最终在填写网格时用换行符填充了空白按钮。这样一切就都抵消了。漂亮、整洁、均匀。
关于java - android:调用 Button.setText() 会导致 Button 发生意外的重新定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5914855/