サイズ 24x24 で 0,0 に子を描画するテスト MvxFrameLayout 派生クラスを作成しました。
public class MyCustomLayout : MvxFrameLayout
{
public MyCustomLayout(Context context, IAttributeSet attrs) : base(context, attrs)
{
}
public MyCustomLayout(Context context, IAttributeSet attrs, IMvxAdapterWithChangedEvent adapter) : base(context, attrs)
{
}
protected override void OnLayout(bool changed, int left, int top, int right, int bottom)
{
if (!changed)
{
return;
}
for (int i = 0; i < this.ChildCount; ++i)
{
var child = this.GetChildAt(i);
child.Layout(0, 0, 24, 24);
}
}
}
次のようなアクティビティ レイアウト (FirstView.axml) で使用されます。
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<hotspotappandroid.droid.views.MyCustomLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
local:MvxBind="ItemsSource Hotspots"
local:MvxItemTemplate="@layout/hotspot" />
</FrameLayout>
1 つの項目を持つビュー モデル:
public class FirstViewModel : MvxViewModel
{
public string[] Hotspots { get; private set; }
public FirstViewModel()
{
this.Hotspots = new string[] { "A" };
}
}
hotspot.xml は、24x24 の画像 (circle.png) を持つ ImageView です。
<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/circle" />
問題は、円の画像が描画されていないことです。
hotspot.xml で と を変更するandroid:layout_width="fill_parent"
と、画像は描画されますが、正しくは表示されません。画像は半分に描いています。画像がそのサイズの 2 倍にスケーリングされて描画され、半分にトリミングされているように見えます (おそらく「child.Layout(0, 0, 24, 24)」が原因です)。android:layout_height="fill_parent
wrap_content
何が起こっているのかわかりません。child
inが「ImageView」ではなくOnLayout
タイプであることがわかりますcirrious.mvvmcross.binding.droid.views.MvxListItemView
。これは、私が期待していたからです。多分それは何か関係がありますか?