2014-01-10 3 views
2

MvvmCross를 사용하여 내 Xamarin Android 앱에 맞춤 회 전자를 보유하고 있습니다. 커스텀을 사용하는 유일한 이유는 모델에 클래스가 포함되어 있고 스피너가 해당 클래스의 속성으로 값을 채우길 원하기 때문입니다. 그러나 드롭 다운의 모양은 내 응용 프로그램의 나머지 부분처럼 보이지 않습니다. 오른쪽에 라디오 버튼이 없으므로 띄어쓰기가 꺼져 있습니다. 이 맞춤형 회 전자가 나머지처럼 보이게하려면 어떻게해야합니까?MvvmCross 맞춤형 회 전자 기본 모양 유지

<Mvx.MvxSpinner 
     style="@style/spinner_input" 
     local:MvxItemTemplate="@layout/item_spinner" 
     local:MvxDropDownItemTemplate="@layout/item_spinnerdropdown" 
     local:MvxBind="ItemsSource ProductCategoryOptions; SelectedItem SelectedProductCategory" /> 

Item_Spinner.axml -이 부분은 제대로 된 것 같습니다. 일단 값을 선택하면 드롭 다운의 모양이 다른 것처럼 보입니다.

<?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:singleLine="true" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:textColor="@color/black" 
      android:text="Test" 
      local:MvxBind="Text Caption" /> 

Item_SpinnerDropDown.axml -이 파일이 잘못되었다고 생각합니다. 드롭 다운의 모양이 일치하지 않습니다.

<?xml version="1.0" encoding="utf-8"?> 
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:local="http://schemas.android.com/apk/res-auto" 
    android:singleLine="true" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:textAppearance="?android:attr/textAppearanceMedium" 
    android:textColor="@color/black" 
    android:text="Test" 
    local:MvxBind="Text Caption" /> 

답변

2

Checkable 스피너도 activated 상태 표시기를 지원하기위한 다음 작품은 우리가 최근에 MvvmCross 내에서 작업 한 무언가이다 - 예를 들어,이 문제를보고 관련 https://github.com/MvvmCross/MvvmCross/issues/481을 커밋

MvxSpinner에서 기본 스타일을 지원하게하려면 local:MvxItemTemplate을 지정하고 local:MvxDropDownItemTemplate을 지정하면 안됩니다 경우는 다음 회가의 자원을 사용

global::Android.Resource.Layout.SimpleDropDownItem1Line 
global::Android.Resource.Layout.SimpleSpinnerDropDownItem 

이 그냥 표준 안드로이드 레이아웃 템플릿을 사용하지만 오히려 Caption 속성을 사용하는 것보다, 목록 항목에 ToString() 구현에 의존합니다.

이것은 '일반'Android 앱에서 회 전자 및 어댑터가 사용하는 것과 유사합니다. 예를 - 대신 자신의 회 전자의 레이아웃을 작성하고 원래 레이아웃을 찾기 위해 안드로이드 소스로보고 아마 가장 쉬운 안드로이드 레이아웃에 그 기초를하고 싶었다면 http://developer.android.com/guide/topics/ui/controls/spinner.html

Spinner spinner = (Spinner) findViewById(R.id.spinner); 
// Create an ArrayAdapter using the string array and a default spinner layout 
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, 
     R.array.planets_array, android.R.layout.simple_spinner_item); 
// Specify the layout to use when the list of choices appears 
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
// Apply the adapter to the spinner 
spinner.setAdapter(adapter); 

참조 보고 : http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.4_r1/frameworks/base/core/res/res/layout/simple_spinner_dropdown_item.xml/

하나의 작은 여기 경고를 전진하는 표준 MvvmCross의을 listitem이 그것을 사용하기 전에 framelayout에서 이러한 표시 목록 항목을 포장 것입니다. 이것은 많은 레이아웃에 영향을 미치지 않지만 일부는 영향을 미칠 수 있습니다. https://github.com/MvvmCross/MvvmCross/issues/481 여전히 열려 있음을 유의하시기 바랍니다 플러스 쿼리는 framelayout에있다 - 그것은 다음의 영향을 미친다 경우이에 (https://github.com/MvvmCross/MvvmCross/blob/v3.1/Cirrious/Cirrious.MvvmCross.Binding.Droid/Views/MvxBaseListItemView.cs 기준) 사용자 정의 목록 항목보기


마지막으로 노트를 작성해야 할 수도 있습니다 https://github.com/MvvmCross/MvvmCross/issues/539에 목록 항목 줄 바꿈 -이 영역에서 변경 사항 및 업데이트가 발생할 수 있음을 명심하십시오. 가까운 시일 내에 여기에서 기본 모양이 변경 될 수 있습니다.

1

Item_SpinnerDropDown.axml

<?xml version="1.0" encoding="utf-8"?> 
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:local="http://schemas.android.com/apk/res-auto" 
    style="?android:attr/spinnerDropDownItemStyle" 
    android:singleLine="true" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    local:MvxBind="Text Caption" />