0

У меня есть собственный listView. Данные списка отображают по горизонтали по горизонтали для каждой строки. В основном макете у меня одинаковое количество textView для установки заголовка этих столбцов. Моя проблема заключается в том, что основной макет отлично работает с весовым свойством. Но макет настройки пользовательских значений для listview, который содержит текстовое представление, не работает с свойством weight.Android Inside Custom ListView, свойство TextView Weight не работает

Главной Схема: (Вес свойство работает правильно)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 
<LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:gravity="center_horizontal" 
     android:weightSum="8"> 
     <TextView 
      android:layout_weight="0" 
      android:id="@+id/cid" 
      android:layout_width="0dp" 
      android:textSize="16dp" 
      android:text="B.Id" /> 
     <TextView 
      android:layout_weight="1" 
      android:id="@+id/nm" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:text="Name" />  
     <TextView 
      android:layout_weight=".9" 
      android:id="@+id/mob" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:text="Mobile" />   
     <TextView 
      android:layout_weight="1.2" 
      android:id="@+id/eml" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:text="Email" />  
     <TextView 
      android:layout_weight=".8" 
      android:id="@+id/bk_no" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:text="Bike No" />  
     <TextView 
      android:layout_weight=".4" 
      android:id="@+id/dy_rt" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:text="Rate" />  
     <TextView 
      android:layout_weight=".9" 
      android:id="@+id/frm" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:text="From Date" />  
     <TextView 
      android:layout_weight=".9" 
      android:id="@+id/to" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:text="To Date" />  
     <TextView 
      android:layout_weight=".25" 
      android:id="@+id/dy" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:text="Dys" />  
     <TextView 
      android:layout_weight=".45" 
      android:id="@+id/cst" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" />  
     <TextView 
      android:layout_weight="0" 
      android:id="@+id/vid" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:text="V.ID" />  
     <TextView 
      android:layout_weight=".9" 
      android:id="@+id/book_dt" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_marginRight="1dp" 
      android:text="Bk Date" /> 
     <TextView 
      android:layout_weight=".3" 
      android:id="@+id/rting" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:text="Rating" /> 
    </LinearLayout> 
    <ListView 
     android:id="@+id/list_past_report" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"></ListView> 
</LinearLayout> 
</LinearLayout> 

Пользовательского ListView Значение Схема установки: (report_custom_list) (свойство Вес не работает)

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 
<LinearLayout 
    android:id="@+id/cus_layout" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:gravity="center_horizontal" 
    android:weightSum="8" > 
<TextView 
    android:layout_weight="0" 
    android:id="@+id/id" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" /> 

<TextView 
    android:layout_weight="1" 
    android:id="@+id/nm" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" /> 

<TextView 
    android:layout_weight=".9" 
    android:id="@+id/mob" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" /> 

<TextView 
    android:layout_weight="1.2" 
    android:id="@+id/eml" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" /> 

<TextView 
    android:layout_weight=".8" 
    android:id="@+id/bk_no" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" /> 

<TextView 
    android:layout_weight=".4" 
    android:id="@+id/dy_rt" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" /> 

<TextView 
    android:layout_weight=".9" 
    android:id="@+id/frm" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" /> 

<TextView 
    android:layout_weight=".9" 
    android:id="@+id/to" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" /> 

<TextView 
    android:layout_weight=".25" 
    android:id="@+id/dy" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" /> 

<TextView 
    android:layout_weight=".45" 
    android:id="@+id/cst" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" /> 

<TextView 
    android:layout_weight="0" 
    android:id="@+id/vid" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" /> 

<TextView 
    android:layout_weight=".9" 
    android:id="@+id/book_dt" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" /> 
<TextView 
    android:layout_weight=".3" 
    android:id="@+id/rting" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" /> 

</LinearLayout> 
</LinearLayout> 

пользовательского адаптер Установка значения:

@Override 
public View getView(final int position, View convertView, ViewGroup parent)  { 
    final Object[] id_obj=_id.toArray(); 
    Object[] name_obj=c_name1.toArray(); 
    Object[] mb_obj=m_no1.toArray(); 
    Object[] eml_obj=email1.toArray(); 
    ... 
    Holder holder=new Holder(); 
    View rowView;  
     rowView = inflater.inflate(R.layout.report_custom_list, null); 
     if(position%2==0) 
      rowView.setBackgroundColor(Color.YELLOW); 
     else 
      rowView.setBackgroundColor(Color.GRAY); 
     holder.tv=(TextView) rowView.findViewById(R.id.id); 
     holder.tv1=(TextView) rowView.findViewById(R.id.nm); 
     holder.tv2=(TextView) rowView.findViewById(R.id.mob); 
     ... 

     holder.tv.setText((CharSequence) id_obj[position]); 
     holder.tv1.setText((CharSequence) name_obj[position]); 
     holder.tv2.setText((CharSequence) mb_obj[position]); 
     ... 
    rowView.setOnClickListener(new OnClickListener() {    
    @Override 
    public void onClick(View v) { 
    } 
    }); 

    return rowView; 
} 

Перед тем, как я закодировал ширину для текста. Но если он идет на другой экран, дизайн схлопывается. Как это исправить?

enter image description here

ответ

3

Возможно проблема: ​ ​

<ListView 
    android:id="@+id/list_past_report" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 
</ListView>` 

Заменить layout_width="wrap_content" с layout_width="match_parent"

+1

Он работал. Спасибо. –

0

Я думаю, что вы должны обновить вам основной файл макета с этим

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<ListView 
    android:id="@+id/list_past_report" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"></ListView> </LinearLayout> 

и внести некоторые изменения в классе адаптера также

public View getView(final int position, View convertView, ViewGroup parent)  { 
final Object[] id_obj=_id.toArray(); 
Object[] name_obj=c_name1.toArray(); 
Object[] mb_obj=m_no1.toArray(); 
Object[] eml_obj=email1.toArray(); 
... 
Holder holder=new Holder(); 
View rowView;  
    rowView = inflater.inflate(R.layout.report_custom_list, null); 
    if(position%2==0) 
     rowView.setBackgroundColor(Color.YELLOW); 
    else 
     rowView.setBackgroundColor(Color.GRAY); 
    holder.tv=(TextView) rowView.findViewById(R.id.id); 
    holder.tv1=(TextView) rowView.findViewById(R.id.nm); 
    holder.tv2=(TextView) rowView.findViewById(R.id.mob); 
    ... 
    if(position == 0){ 
     holder.tv.setText("Title1"); 
     holder.tv.setText("Title2"); 
     holder.tv.setText("Title3"); 
     .... 
    } 
    else{ 
     holder.tv.setText((CharSequence) id_obj[position]); 
     holder.tv1.setText((CharSequence) name_obj[position]); 
     holder.tv2.setText((CharSequence) mb_obj[position]); 
     ... 
    } 

rowView.setOnClickListener(new OnClickListener() {    
@Override 
public void onClick(View v) { 
} 
}); 

return rowView;} 
+0

Если я сделаю это снова, мой заголовок также не появится должным образом. Там также будет выполнена проблема выравнивания –

+0

Использовать listview width = match_ parent –

1

изменения ListViews layout_width к fill_parent

android:layout_width="fill_parent"