私のアプリの一部では、ユーザーに名前のリストが表示され、必要に応じてグループ化するように求められます。
(注意してください、ListView コードは Android Views チュートリアルからそのままコピーされました。私はまだ自分のニーズに合わせてカスタマイズしていません。これを機能させる方法を見つけようとしているだけです。)
基本的なレイアウトは、RelativeLayout を含む ScrollView (以下のコードでは「groupsScrollView」と呼ばれます) を含む LinearLayout です。いくつかのボタンとテキストがあり、その下に名前のリストを表示する ListView があります。これらはすべて表示可能な画面領域よりも高いため、ユーザーは縦方向にスクロールしてすべてを見ることができます。
これはすべて美しく機能しますが、ページが読み込まれると、常に ListView の上部 (ページの中央) に事前スクロールされます。ユーザーに何をすべきかを伝えるために作成したテキストとボタンが表示されません。
画面をつかんで上にスクロールすることはできますが、それは問題なく機能しますが、画面が既に一番上までスクロールされていることを確認したいと思います。新たにロードされたページの上部を表示するために、ユーザーが上にスクロールする必要はありません。しかし、プログラムで画面の一番上までスクロールしようとしたことはすべて失敗しました。
これが私のonCreateメソッドです:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.groups);
mainScrollView = (ScrollView)findViewById(R.id.groupsScrollView);
//get the Bundle out of the Intent...
Bundle extras = getIntent().getExtras();
mNames = extras.getStringArray("mNames");
setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, mNames));
ListView lv = getListView();
lv.setTextFilterEnabled(true);
//This is the line I'm having issues with
mainScrollView.pageScroll(View.FOCUS_UP);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// When clicked, show a toast with the TextView text
Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
Toast.LENGTH_SHORT).show();
}
});
}
「mainScrollView.pageScroll(View.FOCUS_UP);」という行が問題です。エラーは発生しませんが、何もしないようです。scrollTo(0,0)、scrollDirection(View.FOCUS_UP)を試しました)、および私が考えることができる他のすべて。
エラーが発生しないので、これらのスクロール コマンドが実際に機能していると仮定する必要がありますが、それを含む ScrollView または RelativeLayout の上部ではなく、ListView の上部にスクロールしていると想定する必要があります。これは、Google 独自の scrollTo(int x, int y) メソッドの説明で確認されているようです。「このバージョンでは、スクロールも子の境界に固定されます。」
長い質問をさらに長くするために、ScrollView 内に含まれる画面に一連のビューをロードし、ユーザーが操作できるようにプログラム全体をページの上部にスクロールするにはどうすればよいでしょうか?
ありがとう!