ScrollView (スクロールバー)


このセクションの紹介:

このセクションでは、Android の基本 UI コントロールの 10 番目を説明します: ScrollView (スクロール バー)、または彼と呼ぶべきです 別の水平スクロール バーに対応する垂直スクロール バー: 水平スクロールビュー、まず公式ドキュメントを送信しましょう リンク: ScrollView、クラスの構造は次のとおりであることがわかります:

1.png

これは FrameLayout コンテナであることがわかりますが、その上にスクロールが追加され、より多くのコンテンツを表示できるようになります。実際よりも!

さらに、内部に配置できる子要素は 1 つだけ、これは単一のコンポーネント、またはレイアウトにラップされた複雑な階層にすることができます。

一般に、表示が完了しない可能性がある状況では、レイアウトの外側のレイヤーに直接配置できます。 ScrollView または horizo​​ntalScrollView!とても簡単ですよ~!


遭遇する可能性のあるいくつかの要件

さて、ドキュメントを 1 つずつ差し引くのはやめて、実際の開発で遭遇する可能性のあるいくつかの要件について話しましょう:

もう 1 つの典型的な問題は次のとおりです: ScrollView と ListView のネスト問題、これを入れてくださいリストビューの章 説明しましょう~


1. 一番下までスクロールします:

ScrollView が提供する fullScroll() メソッドを直接使用できます:

scrollView.fullScroll(ScrollView.

FOCUS_DOWN); scrollView.fullScroll(ScrollView.FOCUS_UP

); 一番上までスクロール

なお、これを使うときは非同期、つまりaddViewした後、完全に表示されない可能性があるので注意してください。 この時点でこのメソッドを直接呼び出すと無効になる可能性があるため、独自のハンドラーを作成して更新する必要があります~

コード例:

レンダリング:

2.gif実装コード:

レイアウトは比較的シンプルなので、これ以上投稿しません。MainActivityMainActivity.java

を投稿するだけです。

public クラス MainActivity extends AppCompatActivity implements View.OnClickListener {

private Button btn_down;
private Button btn_up;
private ScrollView scrollView;
private TextView txt_show;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView(R.layout.activity_main);
bindViews();
}


private void bindViews() {
btn_down = (ボタン) findViewById(R.id.btn_down);
btn_up = (ボタン) findViewById(R.id.btn_up);
scrollView = (ScrollView) findViewById(R.id.scrollView);
txt_show = (TextView) findViewById(R.id.txt_show);
btn_ down.setOnClickListener(this);
btn_up .setOnClickListener(this);

StringBuilder sb = new StringBuilder();
for (int i = 1; i <= 100; i++) {
sb.append("呵呵 * " + i + 「n」);
}
txt_show.setText(sb.toString());

}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_down:
scrollView .fullScroll(ScrollView.FOCUS_DOWN);
break;
case R.id.btn_up:
scrollView.fullScroll(ScrollView.FOCUS_UP);
Break, = 新しいハンドラー ();
mhandler.post (new runnable () {
public void run () {
if (scroll == null || Inner == null) {
Return;
int Office Er.getMeasureDheight ( ) -scroll.getHeight();

if (offset < 0) {

offset = 0;
scrollTo(0, offset);
}
});
}



scrollTo
( ) パラメータは次のとおりです。 x、y を順番に動かし、対応する x、y 位置まで回転させます。


2. スクロールスライダー画像を設定します


これは簡単です:
垂直
方向スライダー: android:
scrollbarThumbVertical

horizo​​ntal

方向スライダー: android:
scrollbarThumb水平

3.スライダーを非表示にするさて、これは役に立たないようです:
方法は 2 つあります: 1.android:scrollbars="none"2.Java コード設定:scrollview.setVerticalScrollBarEnabled(false);

4.スクロール速度の設定:

これは、直接設定できるメソッドを提供しません。 、ScrollView を自分で継承してから書き直す必要があります。 public void fling (int VelocityY) のメソッド:

@Override
public void fling(int velocityY) {
    super.fling(velocityY / 2);    //速度变为原来的一半
}

このセクションの要約:

さて、ScrollView について考えられるものは限られています。これはあまり使用されず、通常は単に外に置かれています。 また、最も一般的な問題は通常、ScrollView と ListView の入れ子の問題です。何か追加することがあれば、お気軽に質問してください、ありがとうございます~