我有一个水平方向的线性布局
布局的左侧是垂直方向的线性布局
布局的右侧是固定宽度80dp * 80dp的小视图
的问题:
如果我设置宽度为“match_parent”的左侧布局,则右侧布局不可见
如果我使用“width = 0dp”和“weight = 1”设置正确的布局以获得尽可能多的可用空间,那么它只是环绕内容。我的意思是它不会一直到右边的下一个元素。
如何确保左侧元素扩展到全部到父级宽度减去右侧元素占用的80 dp?
答案 0 :(得分:2)
这样做的一般方法是将正确元素的宽度硬编码到80dp并在左侧设置以下内容:
android:layout_width="0dp"
android:layout_weight="1"
这允许右元素自我测量并保留其80dp,然后父元素将所有额外空间分配给左元素,因为它的权重为1。
编辑:
为了进一步解释为什么match_parent将你的右手元素推到屏幕外 - 当LinearLayout有一个带有layout_weight的子元素时,它将执行两次布局传递。第一遍将根据指定的宽度/高度分配最小空间量。在此过程中,您的match_parent元素将按照您所看到的方式运行并填充其父容器,从而将右侧元素推送到屏幕外。然后,在第二个布局过程中,父LinearLayout将根据layout_weight属性分配任何剩余空间。没有人可以分配,所以没有任何改变。
但是,如果在左侧元素上使用layout_width =“0dp”,则在第一次传递期间将不会占用空间,而右侧元素将获得它请求的80dp。在第二次传递期间,LinearLayout父级将根据权重分配剩余宽度 - 因此在这种情况下,左侧元素将接收所有未使用的空间。
答案 1 :(得分:2)
尝试一下(背景颜色仅用于显示正在发生的事情):
/**
* Returns whether the file was uploaded successfully.
*
* @return bool True if the file has been uploaded with HTTP and no error occurred.
*
* @api
*/
public function isValid()
{
$isOk = $this->error === UPLOAD_ERR_OK;
return $this->test ? $isOk : $isOk && is_uploaded_file($this->getPathname());
}
答案 2 :(得分:0)
我相信“match_parent”选项将推出该布局中的任何其他内容。在左侧布局上尝试“fill_parent”,为其他事物留出空间。