2015-03-03 2 views
1

Мне трудно получить представление, которое я раздуваю, чтобы соответствовать ширине родителя. Компоновка я использую на setContentView деятельности содержит следующиеLayoutInflater вид не растягивается до match_parent

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

    <TableLayout 
     android:id="@+id/tableRequestContainer" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

    </TableLayout> 

</ScrollView> 

макет Я надувать выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/layoutRequestItemContainer" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:background="@color/Blue"> 

<TextView 
    android:id="@+id/RequestItemUnit" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:ellipsize="end" 
    android:maxLines="1" 
    android:paddingLeft="10dp" /> 

<TextView 
    android:id="@+id/lblRequestItemCost" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:ellipsize="end" 
    android:maxLines="1" 
    android:paddingLeft="10dp" 
    android:paddingRight="10dp"   
    android:textSize="16sp" /> 

</LinearLayout> 

Тогда в моей деятельности, I цикла над ArrayList, который содержит мои данные и раздувает представление каждой итерации, создайте новый TableRow, добавьте представление в TableRow и добавьте TableRow в родительскую таблицу. Код я использую ниже:

public class Requests extends Activity { 
    View view; 
    LayoutInflater inflater;   
    RequestData requestData; 
    TableLayout requestTable 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     setContentView(R.layout.request_layout); 
     requestTable = (TableLayout) findViewById(R.id.tableRequestContainer); 
     // HERE I POPULATE THE DATA OBJECT requestData with values 
     requestData = getRequestData(); 
     for (int x=0; x<requestData.size(); x++) { 
      TableRow tr = new TableRow(this); 
      tr.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT)); 
      view = LayoutInflater.from(this).inflate(R.layout.request_item_layout, tr, false); 
      // HERE IS THEN FIND THE TEXTVIEWS using view.findViewById(R...) and setText on each to the value in my data object. This works fine 
      // Add the view to the table row 
      tr.addView(view); 
      // Add the tablerow to the table 
      requestTable.addView(tr); 
     } 
    } 
} 

Проблема заключается вид раздувает правильно, и я могу установить значение TextViews, однако контейнер использует wrap_content для ширины вместо match_parent, как я указал в XML. Я понятия не имею, почему и пытаюсь все, о чем я могу думать, и все еще не могу получить завышенное представление, чтобы растянуть ширину до match_parent. Целью является то, что я надуваю, должна быть полная ширина экрана пользователя.

Любая помощь очень ценится! Спасибо!!!

+0

не вы должны использовать TableRow.LayoutParams? – pskink

+0

@pskink - я попытался использовать tr.setLayoutParams (новые TableRow.LayoutParams (TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT)); но результат тот же – Phil

ответ

1

Выяснил это сам. Изменяя следующую строку

tr.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT)); 

к этому вместо

tr.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT, 1.0f)); 

, а также добавлять одни и те же layoutparams с точки зрения, как только он надувается, она простирается, чтобы соответствовать по желанию родителей.

2

Если Set Layoutparams не работает, вы можете попробовать следующее:

Проверьте, были ли вы установить следующее свойство TableLayout динамически:

tableLayout.setStretchAllColumns(true); 
+0

этот работал для меня, ничего больше – deadManN

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

  • Нет связанных вопросов^_^