私のアプリの一部では、ユーザーに名前のリストが表示され、適切と思われるようにグループ化するように求められます。
(注、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内に含まれる画面に一連のビューをロードし、プログラムでページ全体をスクロールしてユーザーが操作できるようにする方法を教えてください。
ありがとう!