2013-11-19 8 views
1

Я хочу создать макет так:Как реализовать макет исправить бар в андроиде

enter image description here

Я думаю, что ScrollView необходимо, может быть, как это:

<RelativeLayout> 
    <RelativeLayout id="fixed"> 
    </RelativeLayout> 
    <ScrollView> 
     <RelativeLayout> 
      <Button... 
      <ListView.... 
      <Button... 
      </RelatievLayout> 
    </ScrollView> 
</RelativeLayout> 

Но кажется, что добавить ListView внутри ScrollView - не очень хорошая идея.

Любая идея сделать это?

Кстати, есть не только Button1 и Button2 за пределами списка, но и больше просмотров, поэтому я не думаю, что добавить взгляды в качестве ножки или головы - это хорошая идея.

+0

, что у вас есть в ListView? – krishna

+0

Список данных, поиск с сервера. – hguser

+0

то почему вы не используете linerlayout вместо listview? – krishna

ответ

0

Первая идея (не рекомендуется): Добавление ListView в ScrollView - плохая идея, поскольку по умолчанию они прокручиваются. Вы можете использовать LinearLayout вместо ListView и создать пользовательский onClickListener для элементов.

<Scrollview> 
    <Button.../> 
    <LinearLayout> 
    <items.../> 
    </LinearLayout> 
</Scrollview> 

Вторая идея (Рекоммендуемый) пойти с одним ListView и создать пользовательский адаптер простирающегося BaseAdapter возврата Views для каждой строки и проведение данных. Это означает, что вы добавляете свои кнопки и элементы в ListView и создаете пользовательский OnClickListener и адаптер, чтобы удерживать модель. Это то, что я использовал, и я сделаю это снова так.

Я ваш адаптер, вам нужно будет Override:

getViewTypeCount - количество типов различных пропашных макетов.

getItemViewType тип строки.

getView возвращение вида на позицию, здесь вам нужно раздуть макет и установить данные.

This is a related question Как создать ListView с различными типами строк.

+0

На самом деле, я использую вторую идею, у меня есть свой собственный адаптер, который расширяет 'ArrayAdapter', и я только переопределяю' getView', я никогда не использую 'getViewTypeCount' и' getItemViewType', у меня будет попытка. Но 'button1' и' button2' в моем примере не имеют никакого отношения к 'listView', поэтому добавить их в пользовательский адаптер - хорошая идея? – hguser

+0

таким образом, кнопки находятся внутри прокручиваемого. Смешивание различного контента в порядке, если ваш адаптер правильно его обрабатывает. – Simulant

1

Это XML-код

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

    <ScrollView 
     android:id="@+id/scrollView1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 

     <LinearLayout android:id="@+id/rlt" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical" > 


     </LinearLayout> 
    </ScrollView> 



</RelativeLayout> 

Java код

LinearLayout llt = (LinearLayout)findViewById(R.id.rlt); 
    for(int i=0;i<12;i++) 
    { 
     final int k =i; 
     LinearLayout ll = new LinearLayout(this); 
     ll.setId(i); 
     ll.setOrientation(LinearLayout.VERTICAL); 
     TextView tv = new TextView(this); 
     tv.setText(" name:"+i); 
     ll.addView(tv); 
     ll.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       // TODO Auto-generated method stub 
       System.out.println("This is the printed text no"+k); 
      } 
     }); 
     //ll.setBackgroundColor(Color.BLACK); 
    llt.addView(ll); 
    } 

Вы можете создать свой собственный ListView как это

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