Problem : ScrollView hides top part of its child view when it grows beyond certain height.
I have following layout defined in XML
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <LinearLayout android:id="@+id/commandPanel" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:paddingLeft="5dip" android:paddingRight="5dip" > <Button android:id="@+id/button1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="OK" /> <Button android:id="@+id/button2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="Back" /> </LinearLayout> <RelativeLayout android:id="@+id/mainContentPanel" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_above="@id/commandPanel" android:background="@android:color/white" > <ScrollView android:id="@+id/formScrollView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="center" android:layout_marginTop="5dip" android:layout_weight="1" android:background="@android:color/darker_gray" android:fillViewport="false" android:paddingBottom="5dip" android:scrollbarStyle="insideOverlay" > <LinearLayout android:id="@+id/formContentLayout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="center" android:layout_marginTop="20dip" android:background="@android:color/black" android:gravity="center_horizontal|top" android:orientation="vertical" android:paddingLeft="5dip" android:paddingRight="5dip" android:paddingTop="20dip" > <LinearLayout android:id="@+id/tr" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="10dip" android:orientation="horizontal" > <TextView android:id="@+id/title" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="sample title" /> <TextView android:id="@+id/value" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="sample value ......." /> </LinearLayout> </LinearLayout> </ScrollView> </RelativeLayout> </RelativeLayout>
---------- code ------
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.scrollview); updateUi(); } //add few more rows here void updateUi() { LinearLayout sampletr = (LinearLayout) findViewById(R.id.tr); LinearLayout contentPane = (LinearLayout) findViewById(R.id.formContentLayout); TextView title = (TextView) findViewById(R.id.title); TextView value = (TextView) findViewById(R.id.value); for (int i = 0; i < 25; i++) { LinearLayout tr = new LinearLayout(this); TextView t = new TextView(this); t.setText("Sample title : " + i); TextView v = new TextView(this); v.setText("Sample value : " + i); tr.addView(t, title.getLayoutParams()); tr.addView(v, value.getLayoutParams()); contentPane.addView(tr, sampletr.getLayoutParams()); } }
Here top rows in LinearLayout (ScrollView's immediate child) start disappearing from top if no. of rows grows more than 15! Moreover I can not even scroll up manually to view them, Any pointer please, what's wrong with this layout?