- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
tl/dr
I am trying to change some layouts sizes in code, and I can change some of them, but the other ones that needed to update based on the changes won't update together. Instead, they retain the previous width that the changed ones had.
因此,我正在使用 Android Studio 并尝试以编程方式更改某些 LinearLayouts 的大小。
这就是我正在做的:
final LinearLayout ll3 = (LinearLayout)findViewById(R.id.box3);
ViewGroup.LayoutParams p3 = ll3.getLayoutParams();
int w3 = 5;
float aux = (float)w3/15;
p3.width = Math.round(max*aux);
ll3.setLayoutParams(p3);
然后这就是我得到的:
Log.i("OnLongClick p3_width", Integer.toString(p3.width));
Log.i("OnLongClick ll3_getWidth", Integer.toString(ll3.getWidth()));
OnLongClick p3_width﹕ 179
OnLongClick ll3_getWidth﹕ 224
ll3.getWidth() 正在返回之前的值,这是 ll3 在设置新参数之前的值。如果我重复这个过程,那么它会显示如下内容:
OnLongClick p3_width﹕ 314 //New Value
OnLongClick ll3_getWidth﹕ 179 //Old (previous) Value
我需要 ll3.getWidth() 与 p3.width 相同,因为我在另一个函数中调用它以重新计算我的应用程序具有的其他 LinearLayouts。否则,当应用程序重绘时,手动更改的矩形会发生变化,但其他矩形(使用更改修改自身)将保持以前更改的方式(对这句话感到抱歉)。
我认为发生这种情况是因为 setLayoutParams 必须及时进一步完成它的工作,而不是在我调用 getWidth() 之前,但我不知道这是否真的是问题所在,以及如何解决它。
感谢任何帮助。
提前致谢!!!
编辑 2:如果我发送
openOptionsMenu();
closeOptionsMenu();
它固定了矩形的大小。但是,它会延迟执行此操作,因此非常难看。无论如何,我需要将任何东西放在 openOptionsMenu() 中间来解决这个问题(closeOptionsMenu() 不会改变 View ,只会关闭菜单)。
最佳答案
找到答案了!!!就像很多次一样,它就在我的脸上。
发生的事情是 p3.width
只不过是 ll3.getLayoutParams().width
。所以,我现在调用 ll3.getLayoutParams().width
,而不是调用 ll3.getWidth()
(它返回了错误的宽度),然后它将正确地生成计算。
我仍然不知道为什么 ll3.getWidth()
会返回一个错误的值,但至少它是有效的(不过,如果你知道为什么,也请告诉我!! !)。
关于android - LinearLayout.getWidth() 不反射(reflect)来自 setLayoutParams 的新宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28322436/
当我使用 xml 设置布局参数时,它工作正常。但是当我尝试以编程方式设置布局参数时,它会出错。我哪里失败了? 我需要在我的 LinearLayout 中设置参数,这里是: 这是我设置参数的代码: r
我正在尝试使用方法 setLayoutParams 来指定我的表格布局的图形参数,但我不确定方法 setLayoutParams 是否采用像素值或倾角值,尤其是在 java 中存储的值似乎是像素的,例
我想将 TextView 的高度远程设置为 WRAP_CONTENT。 我该怎么做,因为没有 remoteviews.setLayoutParams(viewId, param) 函数? 我尝试了 r
我正在制作一个代码,根据其应用程序提供的屏幕尺寸更改其尺寸。它通过 View 的 onSizeChanged() 和 onDraw() 方法获取整个宽度和高度(或其相应 View 的 w 和 h)。
我编写了以下代码,首先增加 ImageView 的大小,然后在 100 毫秒后减小同一 ImageView 的大小。然而,这段代码增加了 ImageView 的大小,但并没有减小它的大小,或者延迟 1
我有 LayoutParams 转换与 addRule()。 我的观点改变了位置,但持续时间是瞬间的。 我在 API 15 上工作,所以我不能使用 beginDelayedTransition()。
如何为 LinearLayout 元素设置 setLayoutParams()。在 MainActivity.java 中。我为第 50 行显示的 set Layout params 和 nullPo
我想尝试在 Android 上使用数据库,所以我制作了一个小应用程序,允许您将联系人添加到数据库然后显示它们。 如果我在 XML 中创建布局然后在代码中编辑文本字段,我就能够显示联系人(来自数据库)。
我创建了一个自定义 View - MyImageView - 在其中绘制位图,我使用 setLayoutParams() 设置我的 View 的宽度和高度,但它不起作用,我使用日志来跟踪我的 View
我看到了这种奇怪的行为,想问问是否有人找到了解决方法。我有一个简单的 RelativeLayout,里面有另一个布局。 奇怪的行为发生在代码中。如果我从嵌套布局中获取 LayoutParams 并将其
-更新- 我已按照 Agarwal 的建议进行操作,但现在出现此错误: 04-21 11:42:01.807: E/AndroidRuntime(1456): java.lang.ClassCastE
我想在实例化之前设置我的 Bitmap 的布局大小,以便它可以被实例化(如果没有,它的布局高度和宽度 = 0)。 我在我的自定义 View 中使用这个简单的代码: @Override protecte
我想将布局参数添加到我的 TextView。 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout
故事 我有 2 个 TextView ,一个在另一个之上: XXXXXXXXXXXX[TextView1] XXXXXXXXXXXX[TextView2] 两个 TextView 都右对齐。 (因此是
例如,如果你想将某些 View 的 LayoutParams 更改为 WRAP_CONTENT,同时 width 和 height以编程方式,它看起来像这样: final ViewGroup.Lay
我想在用户从 ListView 中选择选项时显示 float 按钮。在选中的项目上要显示 float 按钮,否则应隐藏 float 按钮。这是我使用的代码 FloatingActionButton f
我正在尝试使用 FrameLayout 将一个 View 放在表格中另一个 View 的上方(每行 2 个框架布局),但我需要向其添加一些参数(边距、宽度和高度)。问题是向其中添加参数会阻止其显示。例
是否可以设置 mWebView = (WebView) findViewById(R.id.webviewHelp); mWebView.setLayoutParams(new Vie
我过去曾这样做过,但我很沮丧,因为这种方法并不像我预期的那样有效。我有一张图片,我想将其调整为特定尺寸,我正在使用以下代码: snellen.post(new Runnable() {
使用 setLayoutParams 和向 addView 提供参数有什么区别? 我知道 addView 仅在第一次添加 View 时有效。我发现了两种显然可以做同样事情的方法: tv.setLayo
我是一名优秀的程序员,十分优秀!