Android:如何根据其他编程方式设置TextView位置?

时间:2012-07-16 16:00:07

标签: android textview

我想根据其他元素的位置在我的视图中放置元素。让我解释一下:首先,我有两个文本视图,我已成功将第二个(villeOffre)放在第一个(titreOffre)下:

titreOffre = (TextView) findViewById(R.id.offreTitre);
titreOffre.setText(capitalizedString(offre.getTitle()));
villeOffre = (TextView) findViewById(R.id.offreVille);
villeOffre.setText(offre.getLocality());
infos = (TextView) findViewById(R.id.infos);

ViewTreeObserver vto = titreOffre.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener(
{
    @Override
    public void onGlobalLayout()
    {
        FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) villeOffre.getLayoutParams();
        params.setMargins(15,titreOffre.getBottom()+12,15,0);
        villeOffre.setLayoutParams(params);
        titreOffre.getViewTreeObserver().removeOnGlobalLayoutListener(this);
    }
});

这很有效,但现在我想要第三个textview(infos),这取决于villeOffre的位置。怎么做?

非常感谢。

1 个答案:

答案 0 :(得分:3)

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        rr = new RelativeLayout(this);

        b1 = new Button(this);
        b1.setId(R.id.Button01);
        recent = b1;
        b1.setText("Click me");
        rr.addView(b1);


        setContentView(rr);

        b1.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                tv1 = new TextView(can.this);
                tv1.setId((int)System.currentTimeMillis());
                lp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
                lp.addRule(RelativeLayout.BELOW, recent.getId());
                tv1.setText("Time: "+System.currentTimeMillis());
                rr.addView(tv1, lp);
                recent = tv1;
            }
        });
    }