3

利用可能な画面幅を均等に共有したいアイテムの水平リストがあります。

以前は、各アイテムにインデックス バインディングを使用し、各アイテムの layout_weight が等しい静的 LinearLayout を使用していました。

静的 LinearLayout を Mvx.MvxLinearLayout および ItemsSource バインディングに置き換え、項目のマークアップを Itemtemplate に移動すると、layout_weight は MvxLinearLayout によって尊重されなくなります。

アイテム テンプレートを再構築するさまざまな方法を試しましたが、アイテムを配置するときに、このコントロールを layout_weight に従わせる方法はないようです。

Mvx.MvxLinearLayout が android:layout_weight を尊重するようにする方法、または固定寸法の境界を考慮して均等に配置されるアイテムの動的リストを提供できる代替アプローチはありますか?

編集

文字列プロパティ「Name」を持つ 3 つの項目のリストを想定しています。

このマークアップは期待どおりに機能し、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>

このアプローチは機能しません。レイアウトの重みが TextView に正しく適用されません。

<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" />
4

2 に答える 2