1
我想將mvxbindable列表視圖的高亮顏色從標準橙色自定義爲動態顏色集。我認爲這很容易,但我錯了:)使用mvvmcross/mono droid自定義mvxbindablelist的選擇器顏色
我發現我應該使用StateListDrawable在適配器中設置列表項的背景可繪製。我以下面的方式做到這一點(綠色是測試,_backgroundGradient是在構造函數中創建的);
public override View GetView(int position, View convertView, ViewGroup parent)
{
var view =base.GetView(position, convertView, parent);
StateListDrawable sld = new StateListDrawable();
sld.AddState(new int[] { Android.Resource.Attribute.StateFocused }, new ColorDrawable(Color.Green));
sld.AddState(new int[] { Android.Resource.Attribute.StatePressed }, new ColorDrawable(Color.Green));
sld.AddState(new int[] {}, _backgroundGradient);
view.Focusable = true;
if (view != null)
{
view.SetBackgroundDrawable(sld);
}
return view;
}
但是,當列表項被點擊沒有顏色我顯示。下面是我的XML:
<listitem>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res/dk.appsfabrikken.cmsapp"
android:id="@+id/tableViewItem"
android:layout_width="fill_parent"
android:layout_height="90dp"
android:paddingBottom="1dp"
local:MvxBind="{'Click':{'Path':'ShowCellDetails'}}">
<CmsApp.Droid.Controls.UmbracoImageView
android:id="@+id/viewImagePreview"
android:layout_width="90dp"
android:layout_height="90dp"
android:scaleType="centerCrop"
android:padding="5dp"
local:MvxBind="{'ImageData':{'Path':'ImageIconData'},'HideImage':{'Path':'Hidden'}}" />
<TextView
android:layout_gravity="center_vertical"
android:id="@+id/title"
android:textStyle="bold"
android:textColor="@color/table_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
local:MvxBind="{'Text':{'Path':'Title'}}" />
</LinearLayout>
我必須失去了一些東西 - 任何幫助是高度讚賞。
你知道你可以直接在XML中做到這一點嗎? – Cheesebaron
是的,但顏色的定義是動態的,並從web服務中反思。 – Bjarke