我有一个TextView和一个线性布局的ImageButton(水平)。我有的总宽度是300像素。按钮图像是50x50。我可以用于文本的最大宽度是250.如果文本宽度小于250像素(WRAP_CONTENT工作正常),下面的代码工作正常。
// create relative layout for the entire view
LinearLayout layout = new LinearLayout(this);
layout.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
layout.setOrientation(LinearLayout.HORIZONTAL);
// create TextView for the title
TextView titleView = new TextView(this);
titleView.setText(title);
layout.addView(titleView);
// add the button onto the view
bubbleBtn = new ImageButton(this);
bubbleBtn.setLayoutParams(new LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.FILL_PARENT));
layout.addView(bubbleBtn);
当文本占用超过250个像素时出现问题。按钮被推出并在300像素空间内变得不可见。
我想要的是:为图像分配50像素的宽度。 WRAP_CONTENT在剩余的250个像素中。换句话说,不是从左边填写,而是从右边填写。 Gravity在这种情况下使用是正确的吗?我应该在代码中如何以及在何处使用它?
或者其他更好的方法呢?
答案 0 :(得分:1)
使用RelativeLayout而不是LinearLayout。按如下方式设置每个View的LayoutParams:
// add the button onto the view
bubbleBtn = new ImageButton(this);
bubbleBtn.setId(1); // should set this using a ids.xml resource really.
RelativeLayout.LayoutParams bbLP = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
bbLP.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
bbLP.addRule(RelativeLayout.CENTER_VERTICAL);
layout.addView(bubbleBtn, bbLP);
// create TextView for the title
TextView titleView = new TextView(this);
titleView.setText(title);
titleView.setGravity(Gravity.RIGHT);
RelativeLayout.LayoutParams tvLP = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
tvLP.addRule(RelativeLayout.LEFT_OF, 1);
tvLP.addRule(RelativeLayout.CENTER_VERTICAL);
layout.addView(titleView, tvLP);