2015-09-13 10 views
1

У меня есть простой ScrollView, созданный в ландшафтном макете. Когда я поворачиваю устройство от портретного до ландшафтного режима, экран пользовательского интерфейса немного прокручивается, а самая верхняя часть изображения больше не виден. Как заставить представление начать в верхней части представления? Я попытался установить «mScrollView.scrollTo (0,0);» программно, но без везения. Пожалуйста, порекомендуйте.Как заставить Scrollview начинать с верхней части дочернего представления?

частичный файл земли \ layout.xml:

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout 

xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:orientation="vertical" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="#FFFFFF" 
android:focusableInTouchMode="true" 
tools:context=".CardViewActivity"> 

<include 
    android:id="@+id/toolbar" 
    layout="@layout/toolbar" > 
</include> 

<ScrollView 
    android:id="@+id/ScrollView1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

<LinearLayout 
    android:id="@+id/LinearLayout1" 
    style="@style/scrollbar_shape_style" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/rounded_corner" 
    android:layout_marginLeft="6dp" 
    android:layout_marginStart="6dp" 
    android:layout_marginRight="6dp" 
    android:layout_marginEnd="6dp" 
    android:layout_marginTop="6dp" 
    android:layout_marginBottom="6dp" 
    android:useDefaultMargins="false" 
    android:orientation="vertical" 
    android:paddingRight="2dp" 
    android:paddingEnd="2dp" > 

частичный файл активность:

... 
private ScrollView mScrollView; 

@Override 
protected void onResume() { 
    super.onResume(); 
mScrollView = (ScrollView) findViewById(R.id.ScrollView1); 
    if (mScrollView!=null) { 
     mScrollView.setSmoothScrollingEnabled(false); 
     mScrollView.fullScroll(ScrollView.FOCUS_UP); 
     mScrollView.setSmoothScrollingEnabled(true); 
    } 
} 

ответ

0

Поняв фон, я бы посоветовал использовать ту же схему, с Scrollview, для портрета как Что ж. Scrollview выполнит эту работу автоматически.

+0

Я использую Scrollview в файле land \ layout. Файл макета портлета не использует Scrollview. Поэтому, когда я настраивал mScrollView в Activity, он падает - я думаю, потому что он пытается установить mScrollView на макет портрета, и их нет ScrollView, который будет установлен в этом макете портрета. Должен ли я настроить код fullScroll в onResume, но использовать какой-либо тип оператора if, чтобы использовать этот код только в том случае, если устройство находится в альбомной ориентации? – AJW

+0

, вы должны просто проверить, прежде чем использовать свой 'mScrollView', как этот' if (mScrollView! = Null) {// делать ваши вещи с помощью mScrollView} ' –

+0

Мои извинения. Я только что принял ответ. Как «! Null» отрицает использование mScrollView в портретном режиме, если mScrollView установлен в Activity? – AJW