- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个水平项目列表,我希望这些项目平均共享可用的屏幕宽度。
以前,我对每个项目使用索引绑定(bind),并使用静态 LinearLayout,每个项目具有相同的 layout_weight。
当我用 Mvx.MvxLinearLayout 和 ItemsSource 绑定(bind)替换静态 LinearLayout,并将项目的标记移动到 Itemtemplate 时,MvxLinearLayout 不再考虑 layout_weight。
我已经尝试了各种重构项目模板的方法,但似乎没有办法让这个控件在安排其项目时服从 layout_weight。
有没有办法让 Mvx.MvxLinearLayout 遵守 android:layout_weight,或者有什么替代方法可以给我一个动态的项目列表,这些项目将在给定固定尺寸边界的情况下平均排列?
编辑
假设一个包含 3 个项目的列表,具有字符串属性“Name”。
此标记按预期工作,提供 3 个等宽的文本项:
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
local:MvxBind="Text Items[0].Name"
/>
<TextView
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
local:MvxBind="Text Items[1].Name"
/>
<TextView
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
local:MvxBind="Text Items[2].Name"
/>
</LinearLayout>
此方法不起作用,布局权重未正确应用于 TextViews:
<Mvx.MvxLinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
local:MvxBind="ItemsSource Items"
local:MvxItemTemplate="@layout/item_template" />
ItemTemplate 布局文件:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
local:MvxBind="Text Name" />
最佳答案
问题是,当将 MvxLinearLayout 与 ItemTemplate 一起使用时,mvvmcross 会插入一个额外的 View 。因此,不是获取 View 层次结构:
MvxLinearLayout -> TextView
你最终得到:
MvxLinearLayout -> MvxListItemView -> TextView。
因此,应用于 TextView 的布局属性(尤其是权重)对于 LinearLayout 是不可见的。 MvxListItemView 使用默认布局属性(包装内容)进行填充,并且看不到重量效果。
Action 发生的位置在 MvxViewGroupExtensions(例如 Refill)中,其中 subview 被添加到 LinearLayout,以及 MvxAdapter 中的 CreateBindableView 方法,其中 subview 被打包在一个 IMvxListItemView 中。
解决此问题的一种方法是覆盖 MvxViewGroupExtensions 中的方法,并在添加 View 后更新 MvxListItemViews 的布局属性(例如,从底层 View 复制它们)。例如:
private static void Refill(this ViewGroup viewGroup, IAdapter adapter) {
.... // rest of code
Invalidate();
for (int j = 0; j < viewGroup.ChildCount; j++)
{
var child = GetChildAt(j) as MvxListItemView;
var param = new LinearLayout.LayoutParams(
0, ViewGroup.LayoutParams.WrapContent, 1.0f);
child.LayoutParameters = param;
}
}
关于android - 有没有办法让 Mvx.MvxLinearLayout 尊重 android :layout_weight?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17921344/
这个。如果最后一个布局有 .6 (60%),我不明白为什么第一个布局看起来比第二个布局大。 最佳答案 @Miguel Barra 适用于此 andr
也许我误解了 layout_weight 参数,但我不明白为什么这样的东西不起作用...... 我在 LinearLayout 中有三个或更多 TextView 。我想将它们放在具有百分比
我研究了另一个 stackoverflow 问题//答案,发现 layout_weight 的工作定义是“此属性将“重要性”值分配给 View ,并允许它扩展以填充父 View 中的任何剩余空间”(来
我有 3 张图片的布局。我给他们每个人分配了权重来控制他们分配的宽度。 问题是权重使图像的所有宽度可点击,当我希望可点击区域只有图片时,如何实现? 这是布局的相关部分:
我的应用应该是这样的: 这应该是它的外观,尽管我之前使用它的方式并不能很好地缩放。所以这就是我这样做的原因,但它给我带来了很多问题。 但即使是看似相同的设置,第二排也会占据整个房间,看起来像这样: 有
我正在尝试实现一个将分为 2 个子布局的布局。我希望左侧布局占屏幕的 1/4,而右侧布局占屏幕的剩余 3/4。我的目标如下:如果用户按下按钮,则左侧布局将被隐藏,右侧布局将占据整个屏幕(不确定这是否可
我想要一个 TableRow 中的 TextView 和 EditText,并且我希望 EditText 的宽度比 TextView 大两倍,所以我把它放在 TextView 区域: android:
我读过很多问题,说问题出在 layout_width = 0dip 但我试过了,但无法实现。 我有这个持有人: 还有这个部分: 但我的 View 按钮显示仍然显示在左侧......有没有一种方
在我的应用程序中,我有一个如图所示的 Activity (图 #1)。在 TableLayout 中,我将构建一个包含 n 行和 6 列的表。我构建表格插入,就像列表一样,n LinearLayout
在下面的布局 xml 中,我创建了一个带有两个 subview 的水平 LinearLayout。 LinearLayout 子项应该动态拉伸(stretch)其宽度,ImageView 的宽度取决于
基本上我有一个线性布局中的 ImageView,当我的每个布局上设置的权重被调整大小时,布局中的 ImageView 也是如此。问题是 - 只有实际改变宽度的高度保持不变。 为什么会出现问题?我有 c
在代码版本 1 中按钮1的高度是按钮2的5倍 在代码版本 2 中按钮2的高度是按钮1的5倍 当 android:
我正在尝试制作一个计算器应用程序。我有一个外部线性布局,它是垂直方向,然后有嵌套的线性布局,它具有水平方向,我的按钮将在其中放置。只有最后一个嵌套的线性布局没有正确调整按钮的宽度,因为我希望“0”按钮
免责声明:AFAIK 这个问题目前还没有针对 XAMARIN ANDROID 的答案。 Android/Java已多次回答. 我的问题是我没有将 layout_weight 作为参数的 GridLay
为什么下面的 list 只显示第二个 TextView(红色)? 我知道如果我设置 android:layout_height="0px" 它只会显示第一个 TextView(
我正在处理一个包含 5 个按钮的 fragment 。当它在像平板电脑这样的大屏幕上时,我使用一个将所有 5 个按钮放在顶部的 fragment 。我将它们的所有 layout_width 设置为 1
我正在尝试使用 layout_weight 构建一个 android 布局以适应所有尺寸的设备,但我在理解它的行为时遇到了一些困难。 我注意到更改 layout_width/layout_height
当我以编程方式设置 TableRow layout_weight 时遇到问题。以下代码是在 table_body 元素中扩展的 TableLayout: 我只想在 TableLayout 中显示
我有一个简单的问题:如何以编程方式获取 layout_weight?我看到很多题目,有些Layoute设置layout_weight的时候,但是怎么获取呢? 最佳答案 获取LinearLayout.L
在下面的 xml 中,我试图绘制一个包含两个 block (一个 LinearLayout 和一个 TextView)的布局。我希望 LinearLayout 比 TextView 大 5 倍。此 x
我是一名优秀的程序员,十分优秀!