android布局-是否可以从右向左包装内容?

android布局-是否可以从右向左包装内容?,android,layout,Android,Layout,我有一个文本视图和一个线性布局的图像按钮(水平)。我的总宽度是300像素。按钮图像为50x50。我可以用于文本的最大宽度是250。如果文本宽度小于250像素,下面的代码就可以完美地工作(WRAP_内容很好) 当文本占用超过250像素时,问题就出现了。按钮被推出,在300像素的空间内不可见 我想要的是:为图像分配50像素的宽度。在剩余的250像素中换行内容。换句话说,不是从左边填写,而是从右边填写。在这种情况下使用重力是正确的吗?我应该在代码中如何以及在何处使用它 或者其他更好的方法?使用相对性布

我有一个文本视图和一个线性布局的图像按钮(水平)。我的总宽度是300像素。按钮图像为50x50。我可以用于文本的最大宽度是250。如果文本宽度小于250像素,下面的代码就可以完美地工作(WRAP_内容很好)

当文本占用超过250像素时,问题就出现了。按钮被推出,在300像素的空间内不可见

我想要的是:为图像分配50像素的宽度。在剩余的250像素中换行内容。换句话说,不是从左边填写,而是从右边填写。在这种情况下使用重力是正确的吗?我应该在代码中如何以及在何处使用它


或者其他更好的方法?

使用相对性布局而不是线性布局。按如下方式设置每个视图的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);

尝试文本的最大宽度属性view@zolio:除非必要且您知道自己在做什么,否则切勿使用绝对像素(换句话说,仅针对一个特定设备)。使用
LinearLayouts
layout\u weight
允许Android分配屏幕的百分比。有关如何以编程方式最佳设置ID的信息,请参阅本文:
// 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);