0

アプリケーションでListViews用の従来のスクロールバーが必要なクライアントがいます。その理由は、このアプリケーションが抵抗膜方式スクリーンを備えたデバイスでのみ使用されるためです。画面はスタイラスなしではジェスチャをうまく追跡できず、ユーザーはスタイラスを常に使用できるとは限りません。したがって、フォールバックUIコントロールとしての従来のスクロールバー。高速スクロールサムは、この問題の有用な解決策にはなりません。

いくつかの有用なAPIで私が見つけたのは、次のようなトラックとサムの動作を概算できるxml属性です。

android:scrollbarAlwaysDrawVerticalTrack="true"
android:scrollbarStyle="insideInset"
android:fadeScrollbars="false"

しかし、トラックの上部と下部にスクロールボタンを含めることを処理するAPIには何も見つかりませんでした。

APIがこの機能を提供していないと結論付けるのは正しいですか?もしそうなら、私の唯一のオプションは、リストの位置を変更するいくつかのボタンを使用することです。これはもちろん実行可能な解決策ですが、私はまだ別のホイールを再発明していないことを確認したかったのです。

2.2までさかのぼってサポートする必要があります。

スクロールバーの例:

スクロールバーの例

4

3 に答える 3

2

APIがこの機能を提供していないと結論付けるのは正しいですか?

はい、そうです。ListViewAPIは、スクロール用のボタンをサポートしていません。この機能は自分で実装する必要があります。

編集ListView:ボタンの追加をサポートするように拡張された、以下のコメントに基づく簡単な例。

private void init() { // Call this after the ListView is in your existing layout, perhaps in onLayout?
    // The following two lines create a new LinearLayout. If you want to design the layout in XML, you'll have to use LayoutInflater.
    LinearLayout newLayout = new LinearLayout(getContext());
    newLayout.setOrientation(LinearLayout.HORIZONTAL);
    newLayout.setLayoutParams(getLayoutParams());

    ViewGroup parent = (ViewGroup) getParent();
    int index = parent.indexOfChild(this);
    parent.removeView(this);
    newLayout.addView(this);
    parent.addView(newLayout, index);

    // Now, you can customize your LinearLayout.
    newLayout.addView(...); // Maybe add a vertical LinearLayout to contain your two buttons stacked upon each other?
}

これは大まかな概念ですが、うまくいくはずです。

于 2012-07-18T20:33:49.173 に答える
0

ポールの答えは正しい答えですファストスクロールと呼ばれるものがあります。

XMLを介して有効にできます。

android:fastScrollEnabled = "true"またはコード:

getListView()。setFastScrollEnabled(true); (カスタムビューを使用せずに)必要なものに可能な限り近づけます。

編集:

これは、リストに十分な要素がある場合にのみ機能することを忘れました。現在画面に表示されている長さの約4倍である必要があります。

于 2012-10-30T11:07:55.253 に答える
-1

エリックは正しいです...ほとんど。

ファストスクロールと呼ばれるものがあり、それはあなたが望むことをするようなものです。

XMLを介して有効にできます。

android:fastScrollEnabled="true"

またはコードで:

getListView().setFastScrollEnabled(true);

(カスタムビューを使用せずに)必要なものに可能な限り近づけます。

編集:

これは、リストに十分な要素がある場合にのみ機能することを忘れました。現在画面に表示されている長さの約4倍である必要があります。

于 2012-07-18T20:40:20.313 に答える