android - 如何从代码中动态设置layout_weight属性?

如何从java代码动态设置android中的按钮属性layout_weight的值?

9个解决方案

377 votes

您可以将其作为LinearLayout.LayoutParams构造函数的一部分传递:

LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(

LayoutParams.MATCH_PARENT,

LayoutParams.MATCH_PARENT,

1.0f

);

YOUR_VIEW.setLayoutParams(param);

最后一个参数是重量。

Erich Douglass answered 2019-03-16T13:48:22Z

108 votes

使用LinearLayout.LayoutParams:

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(

LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);

params.weight = 1.0f;

Button button = new Button(this);

button.setLayoutParams(params);

编辑:啊,Erich的答案更容易!

kcoppock answered 2019-03-16T13:48:54Z

74 votes

如果您已经在layout(xml)文件中定义了视图,只想以编程方式更改权重,这种方式更好

LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)

mButton.getLayoutParams();

params.weight = 1.0f;

mButton.setLayoutParams(params);

new a LayoutParams会覆盖您在xml文件中定义的其他参数,如margin,或者您需要在LayoutParams中指定所有这些参数。

pkliang answered 2019-03-16T13:49:28Z

19 votes

如果宽度,高度和重量的构造函数不起作用,请尝试使用宽度和高度的构造函数。 然后手动设置重量。

如果要根据权重设置宽度,请在构造函数中将width设置为0。 同样适用于身高。下面的代码适合我。

LinearLayout.LayoutParams childParam1 = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.MATCH_PARENT);

childParam1.weight = 0.3f;

child1.setLayoutParams(childParam1);

LinearLayout.LayoutParams childParam2 = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.MATCH_PARENT);

childParam1.weight = 0.7f;

child2.setLayoutParams(childParam2);

parent.setWeightSum(1f);

parent.addView(child1);

parent.addView(child2);

Ganindu answered 2019-03-16T13:50:02Z

12 votes

如果我有人在寻找答案,请使用:

LinearLayout.LayoutParams lay = (LinearLayout.LayoutParams) myLayout.getLayoutParams();

lay.weight = 0.5;

如果要从xml文件初始化布局,这比为线性布局提供新的布局参数要方便得多。

ash1103 answered 2019-03-16T13:50:35Z

6 votes

任何MATCH_PARENT和WRAP_CONTENT为我工作,对于按钮右边的是TableRow.LayoutParams.这是:

TableRow.LayoutParams buttonParams = new TableRow.LayoutParams(

TableRow.LayoutParams.MATCH_PARENT,

TableRow.LayoutParams.WRAP_CONTENT, 1f);

关于使用MATCH_PARENT或WRAP_CONTENT是一样的。

gantzer89 answered 2019-03-16T13:51:10Z

2 votes

如果您已经在布局(xml)文件中定义了视图并且只想以编程方式更改权重,那么创建新的LayoutParams将覆盖您在xml文件中定义的其他参数。

首先你应该使用“getLayoutParams”然后使用setLayoutParams

LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) mButton.getLayoutParams();

params.weight = 4f;

mButton.setLayoutParams(params);

Shirish Herwade answered 2019-03-16T13:51:51Z

1 votes

如果已经定义了layoutparams(以XML或动态方式),这是一个单行:

((LinearLayout.LayoutParams) mView.getLayoutParams()).weight = 1;

SolidSnake answered 2019-03-16T13:52:20Z

0 votes

使用Kotlin你可以做类似的事情:

import android.content.Context

import android.support.v4.content.ContextCompat

import android.support.v7.widget.CardView

import android.widget.*

import android.widget.LinearLayout

class RespondTo : CardView {

constructor(context: Context) : super(context) {

init(context)

}

private fun init(context: Context) {

val parent = LinearLayout(context)

parent.apply {

layoutParams = LinearLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT,

FrameLayout.LayoutParams.WRAP_CONTENT, 1.0f).apply {

orientation = LinearLayout.HORIZONTAL

addView(EditText(context).apply {

id = generateViewId()

layoutParams = LinearLayout.LayoutParams(0,

LinearLayout.LayoutParams.WRAP_CONTENT, 0.9f).apply {

}

})

addView(ImageButton(context).apply({

layoutParams = LinearLayout.LayoutParams(0,

LinearLayout.LayoutParams.WRAP_CONTENT, 0.1f)

background = null

setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_save_black_24px))

id = generateViewId()

layoutParams = RelativeLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,

LinearLayout.LayoutParams.WRAP_CONTENT).apply {

addRule(RelativeLayout.ALIGN_PARENT_RIGHT)

// addRule(RelativeLayout.LEFT_OF, myImageButton.id)

}

}))

}

}

this.addView(parent)

}

}

Hasan A Yousef answered 2019-03-16T13:52:49Z

android 动态 设置layout_weight,android - 如何从代码中动态设置layout_weight属性?相关推荐

  1. 【Android】代码中动态设置 drawable 背景

    如图这样的效果,我们平时直接可以在 xml 写死. 写法很简单. <?xml version="1.0" encoding="utf-8"?>< ...

  2. android 动态设边距,在代码中动态设置页边距 - android

    我有一个只包含ScrollView和TableLayout的活动.在我的代码我加入tablerows,一切工作正常,除了利润 - 它不工作(没有任何反应),下面是代码:在代码中动态设置页边距 - an ...

  3. 代码中动态设置view或布局的宽高

    有时我们需要在应用中动态改变图片或某一块布局的大小.这就不能用XML文件写成固定值,而需要在java代码中动态设置.效果如下: 网上有一些教程使用relativeView.setLayoutParam ...

  4. Unity 在代码中 动态改变RectTransform位置及宽高 的方法整理

    原文链接(尊重原著):[100个 Unity实用技能] | Unity 在代码中 动态改变RectTransform位置及宽高 的方法整理_unity 修改recttransform_呆呆敲代码的小Y ...

  5. android .9图片在代码中的设置,Android点九图总结以及在聊天气泡中的使用

    编辑推荐: 本文来自于腾讯云,介绍了点九图的本质,聊天气泡中使用点九图,其它问题等. 1. 点九图介绍 这一块是对点九图的简单介绍,如果对这块已经有了解的话,可以直接跳到2,看看聊天气泡中如何使用点九 ...

  6. android中在代码中动态布按钮和画板局并绘制曲线

    绘图面板基类继承View package com.mytest.myapplication.Utility;import android.graphics.Color; import android. ...

  7. android studio 把libs包打包到apk中,设置应用以32bit去读取.so文件

    android studio 把libs包打包到apk中: 只需在当前module里的build.gradle添加下列配置: sourceSets {main {jniLibs.srcDirs = [ ...

  8. linux设置anaconda环境变量,在Linux中永久设置Anaconda环境变量的方法

    [感谢:http://www.codesec.net/view/459539.html] 如果在安装Anaconda的过程中没有将安装路径添加到系统环境变量中,需要在安装后手工添加: 1.在终端输入$ ...

  9. java 动态增加控件_在ngIf中动态添加组件

    我有一些代码可以动态地添加/删除我的一个页面组件 . 这似乎工作得很好,我的方法基于Rob Wormald的真棒Ng2 Advanced Talk . 以标准方式执行操作如下所示: @Componen ...

  10. html语言设置网页背景,在html网页中如何设置背景图片?网页背景怎么设置?

    不知道大家有没有发现,当我们在浏览部分网页的时候网页的背景都是很漂亮的.那么今天小编来教大家怎么在 html 网页中设置背景图片吧! 1.首先还是老样子,我们在开发工具中新建一个 .html 文件,然 ...

最新文章

  1. GHOST系统封装详细图文教程
  2. 2021-07-29
  3. AOGNet:基于深度 AND-OR 语法网络的目标识别方法 | PaperDaily #28
  4. Make It Connected
  5. Linux命令之ifconfig
  6. 计算机组成原理中英对照篇,信息科学系课程介绍(中英对照).doc
  7. anki 插入表格_Anki之导出卡牌组到Excel文件
  8. flutter输入框TextField中文本textAlign对齐分析篇
  9. python宽度优先搜索算法并输出路径
  10. nginx 1.11.0实现http和https正向代理
  11. 蓝桥杯题目——平方回文数
  12. java学习代码01 范围:基本测试、标识符、数据类型、运算符、控制语句
  13. linux系统有线网卡,Thinkpad E430+CentOS 6.4+ linux-3.10.12内核网卡驱动(无线+有线)配置...
  14. 数据三等分离散python_数据自习室01-描述性统计量
  15. 股票市场交易中的强化学习
  16. matlab和opencv混编(mex问题,mexopencv问题)(水下相机折射补偿:Pinax-model)
  17. 手把手教你接入微信开放平台,实现网站拉起微信账号登录,从0开始详细记录
  18. 2019-1-5-问答-产品经理有哪些细分领域,对应特点是什么?
  19. 基于采样的路径规划算法RRT和代码实现
  20. qss 画框_PyQt5系列教程(77):QSS入门2

热门文章

  1. 对决:腾讯对360摊牌
  2. 【nRF Connect】一、下载方法及简介
  3. ISA防火墙规则练习
  4. 笔记本方向键和HOME END 键是 同一个按钮,怎么使用?
  5. 量子计算机 并行,核磁共振量子计算机与并行量子计算
  6. 知到智慧树君子学堂智慧树章节答案
  7. linux下木马程序病原体的制作和运行
  8. 工作篇之---PDF生成盖章
  9. 计算机组成原理速成课程【速成】
  10. Linux 文件删除不了? 一招教你搞定!