Intereting Posts

ScrollView не показывает верхнюю часть

Проблема: ScrollView скрывает верхнюю часть своего дочернего представления, когда он растет выше определенной высоты.

У меня есть следующий макет, определенный в 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> 

———- код ——

 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()); } } 

Здесь верхние строки в LinearLayout (непосредственный дочерний элемент ScrollView) начинают исчезать сверху, если нет. Рядов растет более 15! Более того, я не могу даже прокручивать их вручную, чтобы просмотреть их, Любой указатель, пожалуйста, что случилось с этим макетом?

Solutions Collecting From Web of "ScrollView не показывает верхнюю часть"

Хорошо, я решил это, удалив следующую строку из LinearLayout (Immediate child of ScrollView)

 android:layout_gravity="center" 

ScrollView отлично работает сейчас. Спасибо всем за предложения.

Я бы удалил второй узел RelativeLayout , но сохранил ScrollView . Затем для ScrollView я бы добавил layout_alignParentTop=true и layout_above="@+id/commandPanel" . Второй RelativeLayout кажется избыточным, и обычно, когда вы добавляете детей в RelativeLayout они должны использовать параметры макета контейнера, то есть layout_above, ниже, выровнять и т. Д.

Кажется, что ваш padding-top является проблемой, попробуйте сначала удалить его.

Jus написать xml с изменением lil

 <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="0dp" <--- --- change n remove this margin 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>