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?
ok, I've solved it by removing following line from LinearLayout (Immediate child of ScrollView)
android:layout_gravity="center"
ScrollView works perfectly now. Thanks everyone for suggestions.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With