android 动态设置布局宽度

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 动态设置布局宽度相关的知识,希望对你有一定的参考价值。

参考技术A 例如设置一个图片宽高 关键代码:
//取控件当前的布局参数
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) imageView.getLayoutParams();
//设置宽度值
params.width = dip2px(MainActivity.this, width);
//设置高度值
params.height = dip2px(MainActivity.this, height);
//使设置好的布局参数应用到控件
imageView.setLayoutParams(params);
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
高度除了可以设置成以上固定的值,也可以设置成wrap_content或match_content
ViewGroup.LayoutParams.WRAP_CONTENT
ViewGroup.LayoutParams.MATCH_PARENT
1
2
1
2
在这里插入图片描述
xml

手动设置UILabel宽度自动布局的高度

【中文标题】手动设置UILabel宽度自动布局的高度【英文标题】:Manual set the height of UILable with autolayout 【发布时间】:2014-12-23 06:58:16 【问题描述】:

我的自定义单元格中有一个动态高度的UIlabel,高度值是通过方法计算的:

- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context

然后我通过传递之前计算的值来调用以下方法:

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

但是,问题是我不能简单地设置label.frame = newFrame 以适应其内容,因为自动布局。

而且,我不想对故事板中的元素设置太多限制。我真正需要的是像lable.constraint.height = newHeight 这样的单行代码,有什么想法吗?

【问题讨论】:

【参考方案1】:

为你的标签设置约束。

[yourlabel setNeedsUpdateConstraints];

[yourlabel setTranslatesAutoresizingMaskIntoConstraints:NO]; 

NSLayoutConstraint *constraintHeight = [NSLayoutConstraint constraintWithItem:yourlabel
                                                                        attribute:NSLayoutAttributeHeight
                                                                        relatedBy:NSLayoutRelationEqual
                                                                           toItem:nil
                                                                        attribute:NSLayoutAttributeNotAnAttribute
                                                                       multiplier:1.0
                                                                         constant:newheight];

[yourlabel addConstraints:@[constraintHeight]];

【讨论】:

这对我不起作用,似乎无法添加新的约束。顺便说一句,我在进行单元配置时添加了此代码。 尝试将其添加到您的自定义单元格类中

以上是关于android 动态设置布局宽度的主要内容,如果未能解决你的问题,请参考以下文章

android 开发的时候怎么动态设置控件宽高

android中gridView怎么在代码里动态设置每一列的宽度??

具有每行动态列数的 Android GridLayout

无法在 Android 中的 XML 中设置膨胀视图的布局宽度、高度和重量

android的ProgressBar问题:如何设置ProgressBar的宽度?

Android - 我无法以编程方式设置 EditText 布局宽度