1

我正在尝试为 ArrayAdapter 创建一个视图。这就是我的做法:

FrameLayout rowView = new FrameLayout(context);
rowView.setBackgroundColor(Color.BLUE);
RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams(
    RelativeLayout.LayoutParams.MATCH_PARENT,
    RelativeLayout.LayoutParams.WRAP_CONTENT);
lp2.setMargins(0, 0,
    context.getResources()
        .getDimensionPixelSize(R.dimen.activity_divider_small), 0);
lp2.addRule(RelativeLayout.LEFT_OF, R.id.textView1);

ImageView view = new ImageView(context);
int size = context.getResources().getDimensionPixelSize(
        R.dimen.image_avatar_size);
FrameLayout.LayoutParams lp0 = new FrameLayout.LayoutParams(size, size);
view.setBackgroundResource(R.drawable.va);
rowView.addView(view, lp0);

Button btn = new Button(context);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
        RelativeLayout.LayoutParams.WRAP_CONTENT,
        RelativeLayout.LayoutParams.MATCH_PARENT);
lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
lp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
lp.addRule(RelativeLayout.ALIGN_PARENT_TOP);
btn.setBackgroundColor(Color.RED);
int padding = context.getResources().getDimensionPixelSize(
        R.dimen.activity_margin);
btn.setPadding(padding, padding, padding, padding);
btn.setText(okButtonText);
btn.setId(R.id.textView1);

RelativeLayout layout = new RelativeLayout(context);
layout.addView(rowView, lp2);
layout.addView(btn, lp);

我的意图是垂直拉伸带有 OK 标题的 textView。由于某种原因,按钮与其父级不匹配。谁能指出我的错误?

编辑事情变得非常奇怪。众所周知,如果我们同时设置 ALIGN_PARENT_TOP 和 ALIGN_PARENT_BOTTOM 参数,视图将被垂直拉伸。在我的例子中,视图被放置在布局的底部(就像我只设置了 ALIGN_PARENT_BOTTOM 一样)。

这就是我得到的:

http://img13.imageshack.us/img13/3323/jqs.png

编辑

好吧,这个问题看起来有点像平台错误,所以我不得不添加一个调整 OK 按钮大小的侦听器。

rowView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        int height = rowView.getHeight();
        btn.setHeight(height);
    }
});

我仍在寻找更好的解决方案。

4

1 回答 1

0

你应该试试 layout.addView(btn,lp);

于 2013-07-25T09:36:00.480 回答