当前位置: 代码迷 >> Android >> android setText()后组件位置发生改变,该如何处理
  详细解决方案

android setText()后组件位置发生改变,该如何处理

热度:172   发布时间:2016-05-01 21:10:10.0
android setText()后组件位置发生改变
小弟初学android一周……
问题:
我用绝对布局。
在界面上有两个按钮,因为是绝对布局所以我把两个按钮摆在屏幕的中间,不重叠。
我activity里第一秒把button1的位置变一下,用的是button.layout(int l,int t,int r,int b)
下一秒把button2的内容刷新下,用的是button.setText("");

我发现,在第二秒对button2的内容刷新后,button1的会跑到我布局的初始位置……
我想问问如何不要让button1跑到原来的位置。在第二秒我并没有改变button1的layout……
先谢谢大家了

Java code
package m.m.m;import java.util.Random;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.widget.Button;public class test extends Activity {    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                Message msg = mHandler.obtainMessage();        msg.what = 1001;        mHandler.sendMessageDelayed(msg, 1000);    }        int k=0;        Handler mHandler = new Handler() {        public void handleMessage(Message msg) {            switch (msg.what) {            case 1001:                /*                 * 这里是把button1的位置发生改变                 * */                Button bt1=(Button)findViewById(R.id.button1);                bt1.layout(20, 20, 50, 50);                                Message mg1 = mHandler.obtainMessage();                mg1.what = 1002;                mHandler.sendMessageDelayed(mg1, 1000);                break;            case 1002:                /*                 * 这里是把button2的内容发生改变                 * */                Button bt2=(Button)findViewById(R.id.button2);                bt2.setText(" "+k);                k++;                                Message mg2 = mHandler.obtainMessage();                mg2.what = 1001;                mHandler.sendMessageDelayed(mg2, 1000);                break;            }            super.handleMessage(msg);        }    };}


------解决方案--------------------
上布局文件,再上图吧
------解决方案--------------------
同学,没有看出什么问题啊,把布局文件也贴出来吧。
------解决方案--------------------
布局文件改了一下:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffff"
android:orientation="vertical" >

<LinearLayout android:layout_width="200px"
android:layout_height="100px"
android:orientation="vertical">

<Button android:id="@+id/button1" 
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" a b"/>

</LinearLayout>

<LinearLayout android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">

<Button android:id="@+id/button2" 
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

</LinearLayout>

</FrameLayout>


为什么会出现这种情况呢:估计是layout方法的调用需要一个稳定的Layout空间,如果所在的Layout空间发生变化了,就会导致layout方法失效..
  相关解决方案