2015-08-06 2 views
2

Я добавляю список табличных макетов в LinearLayout динамически. Для этого я использовал ScrollView, чтобы увидеть список таблиц, добавленных в линейный макет.Вид сверху исчез в ScrollView

ниже - мой xml-код.

<LinearLayout 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:orientation="vertical" 
android:paddingLeft="30dp" 
android:paddingRight="30dp" 
android:background="@color/white" 
tools:context=".MainActivity"> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="RET MASTER SITE REPORTS" 
    android:paddingBottom="5dp" 
    android:textColor="@android:color/black" 
    android:textStyle="bold" /> 

<ScrollView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <LinearLayout 
     android:id="@+id/linearLayout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_vertical" 
     android:orientation="vertical"></LinearLayout> 

</ScrollView> 

Исходный код:

layout = (LinearLayout) findViewById(R.id.linearLayout); 
for (int i = 0; i < 5; i++) { 
     if (isColorChange) { 
      displayDeviceDetails(getColor(R.color.blue), getColor(R.color.lightBlue)); 
     } else { 
      displayDeviceDetails(getColor(R.color.orange), getColor(R.color.lightOrange)); 
     } 
} 



//Method which i am calling from loop 
private void displayDeviceDetails(int titleColor, int cellColor) { 
    TableRow row = null; 
    TableLayout tableLayout = new TableLayout(this); 
    tableLayout.setPadding(0, 30, 0, 0); 
    for (int i = 0; i < arr.length; i++) { 
     row = (TableRow) inflater.inflate(R.layout.child_views, null); 
     row.setBackgroundColor(titleColor); 
     TextView tvTitle = (TextView) row.findViewById(R.id.tvRowTitle); 
     TextView tvText = (TextView) row.findViewById(R.id.tvRowText); 
     if (i == 0) { 
      tvText.setVisibility(View.GONE); 
      tvTitle.setGravity(Gravity.CENTER); 
      tvTitle.setTextColor(Color.WHITE); 
      tvTitle.setText(arr[i]); 
     } else { 
      changeBgColor(cellColor); 
      setBgColor(tvTitle); 
      setBgColor(tvText); 
      tvTitle.setGravity(Gravity.RIGHT); 
      tvTitle.setText(arr[i]); 
      tvText.setText(arr1[i]); 
      row.setBackgroundColor(titleColor); 
     } 
     tableLayout.addView(row); 
    } 
    layout.addView(tableLayout); 

} 

В приведенном выше коде, Eсть TextView в верхней части экрана, которая используется для отображения какой-либо текст. Я добавил 3 таблицы к линейной компоновке, показывая 1-ю таблицу из середины, а затем следующие 2 таблицы с небольшим пробелом/пустой экран внизу. Если я увеличиваю количество таблиц, то пустое пространство в нижнем экране увеличивается.

Пример: в ScrollView есть 5 таблиц, но он будет отображаться из второй таблицы, которая может быть от начала таблицы или может быть от середины таблицы, за ней следуют 3-й, 4-й n-ый таблицы с пустым пространством внизу ScrollView.

Я могу видеть текст, но я добавил 5 таблиц в линейный макет внутри ScrollView, когда я его выполнил, он отобразится из второй таблицы, которая может быть от начала таблицы или может быть от середины, а затем третьей, 4-й n-й столы с пустым пространством. У меня есть привязка к моим снимкам экрана.

Пожалуйста, помогите мне.

Top view of the screen

Bottom view of the screen

+0

может возникнуть проблема, когда вы вставляете эту таблицу –

+0

Я добавил свой исходный код. Проверьте это. Проблема заключается только в просмотре прокрутки. –

ответ

1

Нашел! Это android:layout_gravity="center_vertical" в LinearLayout, который является виновником.
Просто удалите это и все должно быть в порядке.

+1

Yah..you правы .. Спасибо .. :) –

+0

Но я действительно шокирован, как это повлияет на просмотр прокрутки? –

+0

Да, я тоже был шокирован, когда узнал об этом, но это факт! –

0

Вы должны изменить корневой LinearLayout к RelativeLayout, как показано ниже:

<RelativeLayout 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:orientation="vertical" 
android:paddingLeft="30dp" 
android:paddingRight="30dp" 
android:background="@color/white" 
tools:context=".MainActivity"> 

<TextView 
    android:id="@+id/textView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="RET MASTER SITE REPORTS" 
    android:paddingBottom="5dp" 
    android:textColor="@android:color/black" 
    android:textStyle="bold" /> 

<ScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_below="@id/textView"> 

    <LinearLayout 
     android:id="@+id/linearLayout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 

     android:orientation="vertical"></LinearLayout> 

</ScrollView> 
</RelativeLayout> 

Я надеюсь, что это поможет вам

+0

Без эффекта. Это не проблема с макетом Root. –

+0

да есть. попробуйте это один раз и проверьте. –

+0

Я пробовал это, но никакого эффекта. Во всяком случае, ответы Рави верны. Благодарю за ваш ответ. –

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