2017-02-21 2 views
0

ПОЖАЛУЙСТА, ПОМОГИТЕ! Я так потерялся! потратил часы, пытаясь это исправить! Спасибо заранее!Как изменить идентификатор группы arrow xamarin andriod

Проблема: Я изменил groupindicator, но изображение растягивается по горизонтали, и я не могу это исправить

То, что я пробовал: Так что я попытался преобразовать один из изображений в 9 патч изображения но тогда хамарин не смог его найти. Я попытался установить индикаторные лучи (0,5), но стрелки тогда не отображаются, Я так потерялся, как я могу заменить стрелку Expanable Listview (groupindicator) на изображение, а затем это изображение не растягивается, но фиксированный размер I может указать? Я также играл с настройками селектора xml, но ничего не работает!

Заранее благодарен!

settings_selector.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item 
     android:left="5dp" 
    android:right="5dp" 
    android:top="5dp" 
    android:bottom="5dp" 
     android:drawable="@drawable/uparrow" 
     android:state_expanded="true" /> 

    <item 
     android:left="11dp" 
    android:right="11dp" 
    android:top="12dp" 
    android:bottom="12dp" 
     android:drawable="@drawable/downarrow" /> 

</selector> 

Page.axml

`{<?xml version="1.0" encoding="utf-8"?> 
<ExpandableListView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/myExpandableListview" 
    android:minWidth="25px" 
    android:minHeight="25px" 
    android:layout_width="match_parent" 
    android:groupIndicator="@drawable/settings_selector" 
    android:layout_height="match_parent" 

    />} 
+0

Вы проверили мой ответ? Любая проблема? –

ответ

0

как можно заменить expanablelistview стрелку (groupindicator) с изображением, а затем, что изображение не растягивается, но фиксированный размер Я могу указать?

Изображение иконки для группового указателя всегда будет растянуто, как правило, изображение с 9 патчами, которое содержит только растяжимый пиксель как сверху, так и снизу, может решить проблему. Но если 9 патч-изображений не работает для вас, и вы настаиваете на использовании ресурса изображения, то простым способом решить проблему растяжения изображения является установка android:groupIndicator="@null" для вашего ExpandableListView.

Затем в макете для списка группы (Header) из ExpandableListView вручную добавить ImageView, например:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <ImageView 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:id="@+id/indicator" 
     android:src="@drawable/downicon" /> 
    <TextView 
     android:id="@+id/DataHeader" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="DataHeader" 
     android:layout_margin="2dp" 
     android:textStyle="bold" 
     android:paddingStart="50dp" 
     android:paddingLeft="50dp" /> 
</LinearLayout> 

В прошлом в коде позади подписываются GroupClick событие вашей ExpandableListView, например, как это:

protected override void OnCreate(Bundle bundle) 
{ 
    base.OnCreate(bundle); 

    // Set our view from the "main" layout resource 
    SetContentView(Resource.Layout.Main); 

    var listView = FindViewById<ExpandableListView>(Resource.Id.myExpandableListview); 
    listView.SetAdapter(new ExpandableDataAdapter(this, Data.SampleData())); 
    listView.GroupClick += ListView_GroupClick; 
} 

private void ListView_GroupClick(object sender, ExpandableListView.GroupClickEventArgs e) 
{ 
    var view = e.ClickedView; 
    var indicator = view.FindViewById<ImageView>(Resource.Id.indicator); 
    if (e.Parent.IsGroupExpanded(e.GroupPosition)) 
    { 
     e.Parent.CollapseGroup(e.GroupPosition); 
     indicator.SetImageResource(Resource.Drawable.downicon); 
    } 
    else 
    { 
     e.Parent.ExpandGroup(e.GroupPosition); 
     indicator.SetImageResource(Resource.Drawable.upicon); 
    } 
} 

Rendering изображение этой демонстрации:

enter image description here

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