0

ListActivityでスクロールの問題が発生しています。レイアウトは次のとおりです。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  style="@style/DefaultBackground" 
  android:orientation="vertical">

    <include layout="@layout/default_header" />

    <ScrollView android:layout_height="fill_parent" android:layout_width="fill_parent"
      android:fillViewport="true">
        <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content"
          android:orientation="vertical">   

            <LinearLayout style="@style/RoundedCornerContainer" android:orientation="vertical">

                <TextView android:text="@string/is_anyone_injured" style="@style/DefaultText.RoundedContainerImmediateChild" />
                <Button android:id="@+id/accident_help_call_911_btn" android:text="@string/call_911" 
                  style="@style/BaseButton.Large" />                      
                <View style="@style/LandingPageChoiceDivider" />

                <TextView android:text="@string/review_accident_checklist" style="@style/DefaultText.RoundedContainerImmediateChild" />
                <Button android:id="@+id/accident_help_checklist_btn" android:text="@string/checklist" 
                  style="@style/BaseButton.Large" />                      
                <View style="@style/LandingPageChoiceDivider" />

                <TextView android:text="@string/collect_accident_info" style="@style/DefaultText.RoundedContainerImmediateChild" />
                <Button android:id="@+id/accident_help_add_accident_btn" android:text="@string/add_new_accident" 
                  style="@style/BaseButton.Large" />

            </LinearLayout>

            <LinearLayout style="@style/RoundedCornerContainer" android:orientation="vertical">
                <TextView android:text="@string/previous_accidents" style="@style/LabelValueTitle" />
                <View style="@style/LandingPageChoiceDivider" />

                <ListView android:id="@id/android:list" android:layout_width="fill_parent" 
                  android:layout_height="fill_parent" android:drawSelectorOnTop="false" />

                <TextView android:id="@id/android:empty"  android:layout_width="fill_parent" 
                  android:layout_height="fill_parent" android:text="@string/no_previous_claims_found" />                    

            </LinearLayout>         
        </LinearLayout>
    </ScrollView>

</LinearLayout>

そして、これが私のListActivityです。

public class AccidentHelp extends BaseListActivity {

    private static final String TAG = "AccidentHelp";

    private PreviousClaimAdapter previousClaimsAdapter;
    private List<AccidentInfo> previousClaimList = new ArrayList<AccidentInfo>();   

    @Override
    public void onCreate(Bundle savedInstanceState) {
        Log.v(TAG, "onCreate called");
        super.onCreate(savedInstanceState);

        setContentView(R.layout.accident_help);
            // code for setting up button OnClickListeners here.
    }

    @Override
    public void onResume() {
        super.onResume();
        setupPreviousClaimsAdapter();
    }

    private void setupPreviousClaimsAdapter() {

        AccidentInfoDB db = new AccidentInfoDB(getApplicationContext());

        previousClaimList = db.read(currentUser.getUserName());
        //there were no previous accidents.
        if (previousClaimList == null) {
            return;
        }
        previousClaimsAdapter = new PreviousClaimAdapter(this, R.layout.previous_claim_row, previousClaimList);

        setListAdapter(previousClaimsAdapter);
        getListView().setSelector(R.drawable.landing_choice_selector);
        getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Log.v(TAG, "previous claim selected.");

                AccidentInfo accidentInfo = (AccidentInfo)getListAdapter().getItem(position);
                Intent intent = new Intent(AccidentHelp.this, ClaimLandingPage.class);
                intent.putExtra(ClaimLandingPage.CLAIM_LANDING_PAGE_ACCIDENT_INFO_EXTRA_NAME, accidentInfo);
                startActivity(intent);                  
            }
        });

    }
}

ご覧のとおり、ヘッダーを除くページのすべてのコンテンツをスクロール可能にする必要があります。私はこれを非ListActivitiesで正常に実行しました。ただし、このレイアウトでは、ページをまったくスクロールできません。

サブアクティビティでデータを更新できるため、Resumeのリストを更新しています。とにかく、それをonCreateに移動しても違いはないようです。
を削除するScrollViewと、レイアウトのListView部分だけをスクロールできます。しかし、私はページ全体をスクロールしたいと思います。何かお勧めはありますか?

4

1 に答える 1

0

ListViewは、ScrollView内にあることを意図したものではありません。スクロールしないようにリストビューのサイズを自動的に設定するにはどうすればよいかについての回答を参照してください。代わりに、レイアウトの空のLinearLayoutに子を動的に追加しています。

于 2011-05-04T17:26:59.090 に答える