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

    }
}

如您所见,我希望页面的所有内容(标题除外)都是可滚动的。我已经在非 ListActivity 中成功地做到了这一点。但是,在这种布局中,它根本不允许我滚动页面。

我正在更新 onResume 列表,因为数据可以在子活动中更新;无论如何,将其移至 onCreate 似乎并没有什么不同。
当我删除 时ScrollView,它允许我只滚动布局的 ListView 部分。但我想滚动整个页面。有什么建议吗?

4

1 回答 1

0

ListView 并不意味着在 ScrollView 中。请参阅如何自动调整列表视图大小使其不滚动的答案。我正在将子代动态添加到布局中的空 LinearLayout 中。

于 2011-05-04T17:26:59.090 回答