2012-11-01 12 views
8

Mam ScrollView z RelativeLayout w środku. Ten RelativeLayout ma w środku kilka View s. Jeden z tych kilku View s jest CheckBox. Po zaznaczeniu/odznaczeniu CheckBox, niektóre z pozostałych View s powinny pojawić się/zniknąć odpowiednio. Pojawianie się i znikanie działa poprawnie, ale za każdym razem, gdy docelowy View s pojawia się lub znika, ScrollView przewija się do samego końca i Zostałem zmuszony do przewinięcia w dół, aby zobaczyć, co się stało.Android ScrollView przewija do góry po wywołaniu setVisibility (View.VISIBLE) na widoku podrzędnym

Kod używam kontrolować widoczność jest:

public void crossCountryCheckboxClicked(View view) 
{ 
    CheckBox crossCountryCheckBox = (CheckBox)findViewById(R.id.checkbox_cross_country); 
    EditText crossCountryHoursTextBox = (EditText)findViewById(R.id.cross_country_hours); 
    if (crossCountryCheckBox.isChecked()) 
    { 
     crossCountryHoursTextBox.setVisibility(View.VISIBLE); 
    } 
    else 
    { 
     crossCountryHoursTextBox.setVisibility(View.GONE); 
    } 
} 

i metoda crossCountryCheckboxClicked() nazywa określając atrybut na element w pliku XML szablonu CheckBox.

Tutaj jest plik XML szablonu:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:custom="http://schemas.android.com/apk/res/logbook.app.activities" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > 

    <TextView 
     android:id="@+id/flight_date" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" /> 

    <EditText 
     android:id="@+id/aeroplane_type" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/flight_date" 
     android:hint="@string/aeroplane_type" /> 

    <EditText 
     android:id="@+id/aeroplane_registration" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/aeroplane_type" 
     android:hint="@string/aeroplane_registration" /> 

    <EditText 
     android:id="@+id/pilot_name" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/aeroplane_registration" 
     android:hint="@string/pilot_name" /> 

    <EditText 
     android:id="@+id/copilot_name" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/pilot_name" 
     android:hint="@string/copilot_name" /> 

    <EditText 
     android:id="@+id/from_aerodome" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/copilot_name" 
     android:hint="@string/from_aerodome" /> 

    <EditText 
     android:id="@+id/to_aerodome" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/copilot_name" 
     android:layout_toRightOf="@id/from_aerodome" 
     android:hint="@string/to_aerodome" /> 

    <EditText 
     android:id="@+id/remarks" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/from_aerodome" 
     android:hint="@string/remarks" /> 

    <Spinner 
     android:id="@+id/aircraft_engine_type_spinner" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/remarks" /> 

    <Spinner 
     android:id="@+id/time_of_day_spinner" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/aircraft_engine_type_spinner" /> 

    <Spinner 
     android:id="@+id/pilot_role_spinner" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/time_of_day_spinner" /> 

    <TextView 
     android:id="@+id/on_time" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/pilot_role_spinner" 
     android:hint="@string/on_time_hint" /> 

    <TextView 
     android:id="@+id/takeoff_time" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/on_time" 
     android:hint="@string/takeoff_time_hint" /> 

    <TextView 
     android:id="@+id/landing_time" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/takeoff_time" 
     android:hint="@string/landing_time_hint" /> 

    <TextView 
     android:id="@+id/off_time" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/landing_time" 
     android:hint="@string/off_time_hint" /> 

    <Button 
     android:id="@+id/button_record" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/off_time" 
     android:onClick="recordTime" 
     android:padding="5dp" 
     android:text="@string/button_record" /> 

    <Button 
     android:id="@+id/button_reset" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/off_time" 
     android:layout_toRightOf="@id/button_record" 
     android:onClick="resetAllTimes" 
     android:padding="5dp" 
     android:text="@string/button_reset" /> 

    <CheckBox 
     android:id="@+id/checkbox_ifr" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/button_record" 
     android:text="@string/checkbox_ifr" 
     android:onClick="ifrCheckboxClicked" /> 

    <CheckBox 
     android:id="@+id/checkbox_cross_country" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/button_record" 
     android:layout_toRightOf="@id/checkbox_ifr" 
     android:text="@string/checkbox_cross_country" 
     android:onClick="crossCountryCheckboxClicked" /> 

    <Spinner 
     android:id="@+id/ifr_type_spinner" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/checkbox_ifr" 
     android:visibility="gone" /> 

    <TextView 
     android:id="@+id/label_ifr_approaches" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/ifr_type_spinner" 
     android:hint="@string/ifr_landings_label" 
     android:visibility="gone" /> 

    <logbook.app.custom.widgets.NumberSelector 
     android:id="@+id/ifr_landings_selector" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/label_ifr_approaches" 
     android:visibility="gone" 
     custom:orientation="vertical" /> 

    <EditText 
     android:id="@+id/ifr_hours" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/ifr_landings_selector" 
     android:hint="@string/ifr_hours_hint" 
     android:inputType="number" 
     android:visibility="gone" /> 

    <EditText 
     android:id="@+id/cross_country_hours" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/ifr_hours" 
     android:hint="@string/cross_country_hours_hint" 
     android:inputType="number" 
     android:visibility="gone" /> 

    <TextView 
     android:id="@+id/label_takeoffs_landings" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/cross_country_hours" 
     android:hint="@string/takeoffs_landings_label" /> 

    <logbook.app.custom.widgets.NumberSelector 
     android:id="@+id/landings_selector" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/label_takeoffs_landings" 
     custom:orientation="horizontal" /> 

    <Button 
     android:id="@+id/button_create_log" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/landings_selector" 
     android:onClick="createLog" 
     android:padding="5dp" 
     android:text="@string/button_create_log" /> 

</RelativeLayout> 

Jak mogę zatrzymać ScrollView z przewijania do góry za każdym razem jeden z widzialności swoich dzieci zmienia się pomiędzy View.GONE i View.Visible?

+0

wkleić kod xml – RajeshVijayakumar

+0

nie Zastosuj widoczność teraz – RajeshVijayakumar

+0

Co masz na myśli, nie stosuj teraz widoczności? – faridghar

Odpowiedz

0

Spróbuj tego:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation = "vertical" > 

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" > 

<TextView 
    android:id="@+id/flight_date" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" /> 

<EditText 
    android:id="@+id/aeroplane_type" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/flight_date" 
    android:hint="@string/aeroplane_type" /> 

<EditText 
    android:id="@+id/aeroplane_registration" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/aeroplane_type" 
    android:hint="@string/aeroplane_registration" /> 

<EditText 
    android:id="@+id/pilot_name" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/aeroplane_registration" 
    android:hint="@string/pilot_name" /> 

<EditText 
    android:id="@+id/copilot_name" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/pilot_name" 
    android:hint="@string/copilot_name" /> 

<EditText 
    android:id="@+id/from_aerodome" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/copilot_name" 
    android:hint="@string/from_aerodome" /> 

<EditText 
    android:id="@+id/to_aerodome" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/copilot_name" 
    android:layout_toRightOf="@id/from_aerodome" 
    android:hint="@string/to_aerodome" /> 

<EditText 
    android:id="@+id/remarks" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/from_aerodome" 
    android:hint="@string/remarks" /> 

<Spinner 
    android:id="@+id/aircraft_engine_type_spinner" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/remarks" /> 

<Spinner 
    android:id="@+id/time_of_day_spinner" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/aircraft_engine_type_spinner" /> 

<Spinner 
    android:id="@+id/pilot_role_spinner" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/time_of_day_spinner" /> 

<TextView 
    android:id="@+id/on_time" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/pilot_role_spinner" 
    android:hint="@string/on_time_hint" /> 

<TextView 
    android:id="@+id/takeoff_time" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/on_time" 
    android:hint="@string/takeoff_time_hint" /> 

<TextView 
    android:id="@+id/landing_time" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/takeoff_time" 
    android:hint="@string/landing_time_hint" /> 

<TextView 
    android:id="@+id/off_time" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/landing_time" 
    android:hint="@string/off_time_hint" /> 

<Button 
    android:id="@+id/button_record" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/off_time" 
    android:onClick="recordTime" 
    android:padding="5dp" 
    android:text="@string/button_record" /> 

<Button 
    android:id="@+id/button_reset" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/off_time" 
    android:layout_toRightOf="@id/button_record" 
    android:onClick="resetAllTimes" 
    android:padding="5dp" 
    android:text="@string/button_reset" /> 

<CheckBox 
    android:id="@+id/checkbox_ifr" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/button_record" 
    android:text="@string/checkbox_ifr" 
    android:onClick="ifrCheckboxClicked" /> 

<CheckBox 
    android:id="@+id/checkbox_cross_country" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/button_record" 
    android:layout_toRightOf="@id/checkbox_ifr" 
    android:text="@string/checkbox_cross_country" 
    android:onClick="crossCountryCheckboxClicked" /> 

<Spinner 
    android:id="@+id/ifr_type_spinner" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/checkbox_ifr" 
    android:visibility="gone" /> 

<TextView 
    android:id="@+id/label_ifr_approaches" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/ifr_type_spinner" 
    android:hint="@string/ifr_landings_label" 
    android:visibility="gone" /> 

<logbook.app.custom.widgets.NumberSelector 
    android:id="@+id/ifr_landings_selector" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/label_ifr_approaches" 
    android:visibility="gone" 
    custom:orientation="vertical" /> 

<EditText 
    android:id="@+id/ifr_hours" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/ifr_landings_selector" 
    android:hint="@string/ifr_hours_hint" 
    android:inputType="number" 
    android:visibility="gone" /> 

<EditText 
    android:id="@+id/cross_country_hours" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/ifr_hours" 
    android:hint="@string/cross_country_hours_hint" 
    android:inputType="number" 
    android:visibility="gone" /> 

<TextView 
    android:id="@+id/label_takeoffs_landings" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/cross_country_hours" 
    android:hint="@string/takeoffs_landings_label" /> 

<logbook.app.custom.widgets.NumberSelector 
    android:id="@+id/landings_selector" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/label_takeoffs_landings" 
    custom:orientation="horizontal" /> 

<Button 
    android:id="@+id/button_create_log" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/landings_selector" 
    android:onClick="createLog" 
    android:padding="5dp" 
    android:text="@string/button_create_log" /> 

</RelativeLayout> 
</ScrollView> 
</LinearLayout> 
+0

To nie pomogło. To samo zachowanie wciąż trwa. – faridghar

+0

To też nie pomogło. – faridghar

+0

Teraz dodaj android: fillViewPort = "true" do znacznika widoku przewijania – RajeshVijayakumar

0

myślę chcesz scrolldown ty pasek przewijania w nowym świetle widzialnym crossCountryHoursTextBox na które po prostu przewijać przewijania jak ten

// scrollview at visible textbox 
yourscroll.smoothScrollBy(0,crossCountryHoursTextBox.getTop()); 
Powiązane problemy