Android ListActivity Scrollview Как получить список для прокрутки - PullRequest
1 голос
/ 17 марта 2012

Я проходил урок по http://www.vogella.de/articles/AndroidListView/article.html научиться делать использовать ListActivity. Я пытаюсь прокрутить список, но понял, что нельзя использовать scrollview в файле макета, чтобы это произошло. Пройдя по поиску, я понял, что Android этого не позволяет, но мне не удалось найти ответ, который, кажется, объясняет, как сделать прокрутку.

Код ниже:

public class MyListActivityActivity extends ListActivity {
/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
    String[] values = new String[] { "Android", "iPhone", "WindowsMobile",
            "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
            "Linux", "OS/2", "iPhone", "WindowsMobile",
            "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
            "Linux", "OS/2" , "iPhone", "WindowsMobile",
            "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
            "Linux", "OS/2"  };
    /*LayoutInflater factory = getLayoutInflater();
    LinearLayout footer = 
            (LinearLayout) factory.inflate(R.layout.main, null);
     getListView().addFooterView(footer); */


    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            R.layout.rowlayout, R.id.label, values);
    setListAdapter(adapter);
}

    protected void onListItemClick(ListView l, View v, int position, long id) {
    String item = (String) getListAdapter().getItem(position);
    Toast.makeText(this, item + " selected", Toast.LENGTH_LONG).show();
}
}

// XML-файл:

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

<ImageView
    android:id="@+id/icon"
    android:layout_width="22px"
    android:layout_height="22px"
    android:layout_marginLeft="4px"
    android:layout_marginRight="10px"
    android:layout_marginTop="4px"
    android:src="@drawable/ic_launcher" >
</ImageView>

<TextView
    android:id="@+id/label"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@+id/label"
    android:textSize="20px" >
</TextView>

</LinearLayout>

В настоящее время, чем больше значений вы помещаете в массив, тем меньше становится список, чтобы убедиться, что он помещается на экране. Я хочу, чтобы текст оставался одинаковым по размеру, и пусть это был длинный список, который я мог бы прокручивать.

Я где-то читал о addHeader и addFooter, которые позволили бы выполнить прокрутку. Но может ли кто-нибудь объяснить мне или привести меня к источнику, который имеет больше информации о том, как это реализовать?

Буду признателен за любой вклад. Спасибо

Ответы [ 3 ]

3 голосов
/ 17 марта 2012

ListView сам по себе является виджетом с прокруткой, поэтому его нельзя использовать внутри ScrollView

1 голос
/ 17 марта 2012

Вам не нужен дополнительный ScrollView.ListActivity или, если быть точным, ListView можно прокручивать по умолчанию, если имеется больше элементов для рисования, чем доступно пространство.

Кстати, следует избегать комбинации ScrollViews и ListViews, но есть несколько проблем, которые следует учитыватьи вам это не нужно для вашего решения.

0 голосов
/ 17 марта 2012

Список просмотра это самокрутка. если вы хотите установить макет прокрутки, вы можете использовать этот код Это работа для вас.

<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/lwidget36"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@+id/lwidget35"
android:background="#000321"
android:overScrollMode="never" >

<LinearLayout 
android:layout_width="wrap_content"
android:layout_height="wrap_content" >

<ImageView
android:id="@+id/icon"
android:layout_width="22px"
android:layout_height="22px"
android:layout_marginLeft="4px"
android:layout_marginRight="10px"
android:layout_marginTop="4px"
android:src="@drawable/ic_launcher" >
</ImageView>

<TextView
android:id="@+id/label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@+id/label"
android:textSize="20px" >
</TextView>

</LinearLayout>
</ScrollView>
...