2

私はタイムライン UI を実装しています。これは基本的にListView. 注意が必要なのは、ユーザーが をスクロールするListViewと、スクロールバーの横にテキスト ボックス (タイム スロット、たとえば午前 9:00 を表示) が表示されることです。左側に隣接しており、スクロールバーで移動します。

OnScrollListenerスクロールイベントを検出するために使用しています。しかし、テキスト ボックスを適切な場所に配置できるように、スクロール バーの正確な位置 (上、中点、下) を取得する方法がわかりません。一番上のアイテムの位置を取得することに関する多くの投稿がありますが、スクロールバー自体ではないようです。

何かご意見は?

ところで、UI のスクリーンショットを添付できなくて申し訳ありません。私は新しいユーザーなので、Stackoverflow ではそれができません。

4

2 に答える 2

0

getListView().getLastVisiblePosition()

listview.post(new Runnable() {
    public void run() {
        listview.getLastVisiblePosition();
    }
});

View.getScrollY()

getScrollY : このビューのスクロールされた上部の位置を返します。これは、ビューの表示部分の上端です。ピクセルは画面上のビューのフレームの外側にあるため、その上にピクセルを描画する必要はありません。

戻り値 ビューの表示部分の上端 (ピクセル単位)。

また参照してください: http://eliasbland.wordpress.com/2011/07/28/how-to-save-the-position-of-a-scrollview-when-the-orientation-changes-in-android/

于 2012-10-12T13:43:15.267 に答える
0

しかし、テキスト ボックスを適切な場所に配置できるように、スクロール バーの正確な位置 (上、中点、下) を取得する方法がわかりません。

Pathおそらく、アプリケーションのようなものが必要です。このチュートリアルは、あなたが探しているものです (おそらく、まだ表示されていない場合)。

基本的に、 にListViewはスクロールバーの位置 (サイズも) に関するいくつかのメソッドが使用されていますが、これらのメソッドは として宣言されているため、外部からは使用できないため、クラスprotectedを拡張する必要があります。ListViewそれらのメソッドはListView.computeVerticalScrollExtent()ListView.computeVerticalScrollOffset()およびListView.computeVerticalScrollRange()です。

これらのメソッドを使用すると、リスナーの特定の瞬間にスクロールバーが配置されている場所を把握できるはずです。

于 2012-10-12T13:08:41.723 に答える