2012-04-30 3 views
36

Я покажу вам изображение ниже, в котором высота строк не одинакова. Я хочу, чтобы строки были одинаковой высоты.Как установить высоту строк ListView

enter image description here

В моей программе я получаю данные из службы XML, который я parsered и отображение результата на экране списка, но высота ListView строки не совпадают.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:background="@drawable/list_selector" 
    android:padding="3dip" 
    android:layout_width="match_parent" 
    android:gravity="center" 
    android:layout_height="10dp"> 

    <TextView android:layout_height="wrap_content" android:text="ITEM" 
     android:layout_width="wrap_content" android:id="@+id/txtItem" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:textSize="15dip" 
     android:textStyle="bold" 
     android:textColor="#040404"></TextView> 

    <TextView android:layout_height="wrap_content" android:text="MANUFACTURER" 
     android:layout_width="wrap_content" android:id="@+id/txtItemTwo" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:textSize="14dip" 
     android:textColor="#FF7F50" 

     ></TextView> 


</LinearLayout> 

Я уже задает высоту

андроида: layout_height = "10dp"

, но все еще не то же самое, когда diplaying на ListView.

Это мой пользовательский адаптер для getVieew: -

public class MyEventAdapter extends BaseAdapter { 

    ArrayList <String> listTitle; 
    ArrayList <String> listFullText; 

    Activity activity; 

    public MyEventAdapter(Activity activity, ArrayList <String> listTitle, ArrayList <String> listFullText) { 
     super(); 
     this.listTitle = listTitle; 
     this.listFullText = listFullText; 

     this.activity = activity; 
    } 

    public int getCount() { 
     // TODO Auto-generated method stub 
     return listTitle.size(); 
    } 

    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

    private class ViewHolder { 
     TextView txtViewTitle; 
     TextView txtViewTitleTwo; 

    } 

    public View getView(int position, View view, ViewGroup parent) { 
     // TODO Auto-generated method stub 

     ViewHolder title; 
     LayoutInflater inflater = activity.getLayoutInflater(); 

     if (view == null) { 
      view = inflater.inflate(R.layout.lview_row, null); 
      title = new ViewHolder(); 

      title.txtViewTitle = (TextView) view.findViewById(R.id.txtItem); 
      title.txtViewTitleTwo = (TextView) view.findViewById(R.id.txtItemTwo); 

      view.setTag(title); 
     } else { 
      title = (ViewHolder) view.getTag(); 
     } 

     title.txtViewTitle.setText(listTitle.get(position)); 
     title.txtViewTitleTwo.setText(listFullText.get(position)); 

     return view; 
    } 
} 

Любой, пожалуйста, мне правильный путь, чтобы получить желаемый результат из.

Заранее спасибо.

+0

Если вы используете пользовательский адаптер, то отправьте свой код метода getView из пользовательского адаптера. –

+0

Ваша реализация должна работать, вы должны что-то делать где-то еще :). – Warpzit

+0

hi @BharatSharma Я просто отправлю свой код пользовательского адаптера, пожалуйста, посмотрите спасибо ... – user755278

ответ

-2

Прежде всего, вы должны использовать зр указать размер текста не окунуть (дп), второй я думаю, что у вас есть некоторые противоречивые размеры у вас есть 2 текстовых поля 15 + 14 дп в компоновке только 10 др. Попытайтесь увеличить высоту макета до 40 дп и изменить размеры вашего текста, чтобы использовать sp

2

метод переопределения getView(int position, View convertView, ViewGroup parent) в вашем классе MyEventAdapter и используйте view.setMinimumHeight(minHeight); для установки минимальной высоты просмотра.

установить минимальную высоту обзора с в методе `GetView (INT положение, Вид convertView, ViewGroup родителю)» следующим образом:

public View getView(int position, View convertView, ViewGroup parent) { 

    ViewHolder title; 
    LayoutInflater inflater = activity.getLayoutInflater(); 

    if (view == null) { 
     view = inflater.inflate(R.layout.lview_row, null); 
     view.setMinimumHeight(minHeight); //set minimum height of view here 
     title = new ViewHolder(); 

     title.txtViewTitle = (TextView) view.findViewById(R.id.txtItem); 
     title.txtViewTitleTwo = (TextView) view.findViewById(R.id.txtItemTwo); 

     view.setTag(title); 
    } else { 
     title = (ViewHolder) view.getTag(); 
    } 

    title.txtViewTitle.setText(listTitle.get(position)); 
    title.txtViewTitleTwo.setText(listFullText.get(position)); 

    return view;  
} 
1
<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:background="@drawable/list_selector" 
    android:padding="3dip" 
    android:layout_width="match_parent" 
    android:gravity="center" 
    android:layout_height="match_parent"> 

    <TextView android:layout_height="wrap_content" android:text="ITEM" 
     android:layout_width="wrap_content" android:id="@+id/txtItem" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:textSize="15sp" 
     android:textStyle="bold" 
     android:textColor="#040404"></TextView> 

    <TextView android:layout_height="wrap_content" android:text="MANUFACTURER" 
     android:layout_width="wrap_content" android:id="@+id/txtItemTwo" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:textSize="14sp" 
     android:textColor="#FF7F50" 

     ></TextView> 


</LinearLayout> 

Если вы имеете более чем одну строку в тексте, то установите текст как одну строку, чтобы он не вошел во вторую строку и не изменил высоту каждой строки.

132

проблема заключается в том, что вы неправильно используя инфлятор, не дают нуль в качестве корневого узла

, если вы передаете нуль в качестве корневого узла, все параметры размера, заданные в XML не работать

правильный код

view = inflater.inflate(R.layout.lview_row, parent, false); 

http://www.doubleencore.com/2013/05/layout-inflation-as-intended/

+2

Это сработало для меня! –

+11

Отличный ответ. Парень должен отметить вас правильно. – KickingLettuce

+0

Это ответ, и это должно быть выбрано в качестве ответа. Thx @clever boy :)) +1 – alicanbatur

0

Если вы имеете более чем одну строку в тексте затем установить текст в качестве одного чтобы он не вошел во вторую строку и изменил высоту каждой строки.

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