2016-01-08 4 views
1

У меня есть счетчик, который появляется в списке. Мне нужно изменить высоту спиннера, но по какой-то причине высота счетчика не изменится. В основном мне нужно увеличить высоту до высоты элемента в списке. Ниже приведен шаблон для Listview:Xamarin Android, как изменить высоту счетчика в виде списка

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="horizontal" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:paddingRight="17dp" 
     android:paddingLeft="17dp"> 
     <LinearLayout 
      android:orientation="vertical" 
      android:minWidth="25px" 
      android:minHeight="25px" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 
      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:id="@+id/DateTextView" 
       android:textSize="24dp" 
       android:textColor="#000000" /> 
      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="20dp" 
       android:id="@+id/DayOfWeekTextView" 
       android:ellipsize="end" 
       android:textStyle="bold" 
       android:textColor="#000000" /> 
     </LinearLayout> 
     <Spinner 
      android:id="@+id/spinner" 
      android:layout_width="wrap_content" 
      android:layout_alignParentRight="true" 
      android:drawSelectorOnTop="false" 
      android:textSize="40px" 
      android:textColor="#FFFFFF" 
      android:layout_centerVertical="false" 
      android:drawingCacheQuality="high" 
      android:layout_height="fill_parent" /> 
    </RelativeLayout> 

Вот как выглядит текущий вертушка:

enter image description here

Вот как я хочу, чтобы появиться код

enter image description here

адаптер для счетчика:

public override Android.Views.View GetView(int position, Android.Views.View convertView, ViewGroup parent) 
    { 
     var item = statuses[position]; 
     var view = (convertView ?? activity.LayoutInflater.Inflate(Android.Resource.Layout.SimpleSpinnerItem, 
      parent, 
      false)); 
     Android.Graphics.Color customColor = new Android.Graphics.Color(); 

     view.SetBackgroundColor(Android.Graphics.Color.ParseColor(item.nStatusColor)); 
     var name = view.FindViewById<TextView>(Android.Resource.Id.Text1); 
     //name.SetHeight(50); 
     name.Text = item.nStatus; 
     return view; 
    } 

ответ

1

Так против делать это программно я начал думать о макете. Затем я понял, что ответ на установку высоты - это добавить RelativeLayout в качестве родителя для Spinner. Затем fill_parent. Смотрите код ниже!

<RelativeLayout 
    android:minWidth="25px" 
    android:minHeight="25px" 
    android:layout_alignParentRight="true" 
    android:layout_width="match_parent" 
    android:layout_height="fill_parent"> 
    <Spinner 
     android:id="@+id/spinner" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_alignParentRight="true" 
     android:layout_centerVertical="true" 
     android:drawSelectorOnTop="false" 
     android:drawingCacheQuality="high" 
     android:textColor="#FFFFFF" /> 
</RelativeLayout> 
0

Попробуйте android:layout_height="fill_parent" также, если есть другой объект в ListView вы можете использовать alignTop и alignBottom

+0

Я пробовал это, и он не работает. –

0

Вы должны создать свой собственный Drawable файл XML и установить его в качестве фона собственности вашего Spinner. Я приведу вам пример как можно скорее.

Drawable Ресурс: сохранен как spinner.xml в вытяжке каталоге

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true"> 
     <shape android:shape="rectangle"> 
      <corners android:radius="3dip" /> 
      <stroke android:width="1dip" android:color="#FF327935" /> 
      <gradient android:angle="-90" android:endColor="#FF6BCA70" android:startColor="#FF327935" /> 
     </shape> 
    </item> 
    <item android:state_focused="true"> 
     <shape android:shape="rectangle"> 
      <corners android:radius="3dip" /> 
      <stroke android:width="1dip" android:color="#FFFFFFFF" /> 
      <gradient android:angle="-90" android:endColor="#FF6BCA70" android:startColor="#FF327935" /> 
     </shape> 
    </item> 
    <item android:state_enabled="false"> 
     <shape android:shape="rectangle"> 
      <corners android:radius="3dip" /> 
      <stroke android:width="1dip" android:color="#FF327935" /> 
      <gradient android:angle="-90" android:endColor="#FFCCCCCC" android:startColor="#FF333333" /> 
     </shape> 
    </item> 
    <item android:state_drag_hovered="true"> 
     <shape android:shape="rectangle"> 
      <corners android:radius="3dip" /> 
      <stroke android:width="1dip" android:color="#FFFFFFFF" /> 
      <gradient android:angle="-90" android:endColor="#FF6BCA70" android:startColor="#FF327935" /> 
     </shape> 
    </item> 
    <item> 
     <shape android:shape="rectangle"> 
      <corners android:radius="3dip" /> 
      <stroke android:width="1dip" android:color="#FFFFFFFF" /> 
      <gradient android:angle="-90" android:endColor="#FF6BCA70" android:startColor="#FF327935" /> 
     </shape> 
    </item> 
</selector> 

Spinner:

<Spinner 
    android:id="@+id/spinnerMonths" 
    android:layout_width="200dp" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@+id/imageView4" 
    android:layout_alignTop="@+id/imageView4" 
    android:layout_toStartOf="@+id/imageView4" 
    android:background="@drawable/spinner" 
    android:spinnerMode="dialog" 
    android:textAlignment="center" /> 

EDIT

попробовать это

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="horizontal" 
android:paddingLeft="17dp" 
android:paddingRight="17dp"> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:minHeight="25px" 
    android:minWidth="25px" 
    android:orientation="vertical"> 

    <TextView 
     android:id="@+id/DateTextView" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:textColor="#000000" 
     android:textSize="24sp" /> 

    <TextView 
     android:id="@+id/DayOfWeekTextView" 
     android:layout_width="match_parent" 
     android:layout_height="20dp" 
     android:ellipsize="end" 
     android:textColor="#000000" 
     android:textStyle="bold" /> 


</LinearLayout> 

<Spinner 
    android:id="@+id/spinner" 
    android:layout_width="wrap_content" 
    android:layout_height="50dp" 
    android:layout_centerVertical="false" 
    android:background="@drawable/spinner" 
    android:drawSelectorOnTop="false" 
    android:drawingCacheQuality="high" 
    android:textColor="#FFFFFF" 
    android:textSize="20sp" /> 
</RelativeLayout> 

EDIT 2

public override Android.Views.View GetView(int position, Android.Views.View convertView, ViewGroup parent) 
    { 
     var item = statuses[position]; 
     var view = (convertView ?? activity.LayoutInflater.Inflate(Android.Resource.Layout.SimpleSpinnerItem, 
      parent, 
      false)); 
     Android.Graphics.Color customColor = new Android.Graphics.Color(); 

     view.SetBackgroundColor(Android.Graphics.Color.ParseColor(item.nStatusColor)); 
     var name = view.FindViewById<TextView>(Android.Resource.Id.Text1); 
     //name.SetHeight(50); 

     ViewGroup.LayoutParams mParams = parent.getLayoutParams(); 
     mParams.height = 50; 
     view.setLayoutParams(mParams); 

     name.Text = item.nStatus; 
     return view; 
    } 
+0

Выбирается для прядильщика вправо? –

+0

Да. Поместите его в выпадающую папку и укажите на него с фона Свойство Spinner. –

+0

Обновил мой ответ. –

Смежные вопросы