web-dev-qa-db-ja.com

android ListView scrollbarStyle

誰もがAndroid:scrollbarStyleのドキュメントを知っていますか?可能であれば、スクリーンショット付きの4つの値それぞれの例をご覧ください。外部の内部タイプとの違いがわかりますが、Inset Outsetパーツとは何ですか?たとえば、insideOutset insideInsetの違いは見られないようです。同様に、outsideOutset outsideOutsetの違いも見られません。

前もって感謝します!ベン

49
Ben

OutsideOutsetやinsideOutsetのような値はありません。可能な4つの値は、insideOverlay、insideInset、outsideOverlay、outsideInsetです。
次の2つのリンクにドキュメントがあります...

http://developer.Android.com/reference/Android/view/View.html#attr_Android:scrollbarStyle

http://developer.Android.com/reference/Android/view/View.html#SCROLLBARS_INSIDE_INSET

ドキュメントを正しく理解できませんでした。そこで、ApiDemos Scrollbarデモからの参照を使用して、これを試しました。しかし、insideInsetとoutsideOverlayに違いはないことがわかりました。
これらの2つの値はdiffです。どちらもInsetまたはOverlay

更新されたscrollbar3.xmlは

<LinearLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical">

<ScrollView
    Android:id="@+id/view1"
    Android:layout_width="100dip"
    Android:layout_height="120dip"
    Android:padding="8dip"
    Android:scrollbarStyle="insideOverlay"
    Android:background="@Android:color/white"
    Android:overScrollMode="never">
    <TextView
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:textColor="#ffffff"
        Android:background="@Android:color/darker_gray"
        Android:text="@string/scroll_text" />
</ScrollView>

<ScrollView
    Android:id="@+id/view2"
    Android:layout_width="100dip"
    Android:layout_height="120dip"
    Android:padding="8dip"
    Android:scrollbarStyle="insideInset"
    Android:background="@Android:color/white"
    Android:overScrollMode="never">
    <TextView
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:textColor="#ffffff"
        Android:background="@Android:color/darker_gray"
        Android:text="@string/scroll_text" />
</ScrollView>

<ScrollView
    Android:id="@+id/view3"
    Android:layout_width="100dip"
    Android:layout_height="120dip"
    Android:padding="8dip"
    Android:scrollbarStyle="outsideOverlay"
    Android:background="@Android:color/white"
    Android:overScrollMode="never">
    <TextView
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:textColor="#ffffff"
        Android:background="@Android:color/darker_gray"
        Android:text="@string/scroll_text" />
</ScrollView>

<ScrollView
    Android:id="@+id/view4"
    Android:layout_width="100dip"
    Android:layout_height="120dip"
    Android:padding="8dip"
    Android:scrollbarStyle="outsideInset"
    Android:background="@Android:color/white"
    Android:overScrollMode="never">
    <TextView
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:textColor="#ffffff"
        Android:background="@Android:color/darker_gray"
        Android:text="@string/scroll_text" />
</ScrollView></LinearLayout>

誰かがこれを見て明確にすることを願っています...

Screenshot for the View Scrollbar styles

58
Vijay C

次に、もう少し詳細な例を示します。ここで何が起こっているかをより明確にするために、背景色を設定しました。

Android scrollBarStyle settings visualized

まず、色:

  • 黒-マージン
  • 白-パディング
  • グレー-スクロールビューの内容
  • 緑-スクロールバーifそれは独自のスペースを占有します(これを2つの「インセット」の例のscrollbarTrackVerticalとして明示的に追加しました)

2つのセクションを定義しましょう。

  • 「コンテンツ領域」-スクロールビューに表示されるもの
  • 「パディング」-スクロールビューのコンテンツの周囲のスペース

scrollBarStyleの2つの部分を別々に考えてみましょう。

  • inside-スクロールバーが表示されます内部コンテンツ領域(コンテンツとスクロールバーの両方をパディングで囲みます)

  • outside-スクロールバーが表示されます外側コンテンツ領域

  • overlay-スクロールバーは、それが含まれるセクションの右端にオーバーレイします

  • inset-スクロールバーは、それが入っているセクションを左に押し、独自のスペースを占有します

レイアウトxmlは以下に表示されます

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:orientation="vertical"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:background="#000"
    >

    <ScrollView 
        Android:layout_width="match_parent"
        Android:layout_height="0dp"
        Android:layout_weight="1"
        Android:scrollbarStyle="insideOverlay"
        Android:background="#fff"
        Android:fadeScrollbars="false"
        Android:layout_margin="8dp"
        Android:padding="16dp" >
            <LinearLayout Android:orientation="vertical" Android:layout_width="match_parent" Android:layout_height="wrap_content" Android:background="#aaa" >
                <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="insideOverlay"/>
                <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="insideOverlay"/>
                <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="insideOverlay"/>
                <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="insideOverlay"/>
                <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="insideOverlay"/>
                <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="insideOverlay"/>
                <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="insideOverlay"/>
            </LinearLayout>
    </ScrollView>

    <ScrollView 
        Android:layout_width="match_parent"
        Android:layout_height="0dp"
        Android:layout_weight="1"
        Android:scrollbarStyle="insideInset"
        Android:background="#fff"
        Android:scrollbarTrackVertical="@drawable/green_block"
        Android:fadeScrollbars="false"
        Android:layout_margin="8dp"
        Android:padding="16dp" >

        <LinearLayout Android:orientation="vertical" Android:layout_width="match_parent" Android:layout_height="wrap_content" Android:background="#aaa" >
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="insideInset" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="insideInset" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="insideInset" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="insideInset" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="insideInset" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="insideInset" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="insideInset" />
        </LinearLayout>

    </ScrollView>
    <ScrollView 
        Android:layout_width="match_parent"
        Android:layout_height="0dp"
        Android:layout_weight="1"
        Android:scrollbarStyle="outsideOverlay"
        Android:background="#fff"
        Android:fadeScrollbars="false"
        Android:layout_margin="8dp"
        Android:padding="16dp" >

        <LinearLayout Android:orientation="vertical" Android:layout_width="match_parent" Android:layout_height="wrap_content" Android:background="#aaa" >
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="outsideOverlay" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="outsideOverlay" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="outsideOverlay" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="outsideOverlay" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="outsideOverlay" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="outsideOverlay" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="outsideOverlay" />
        </LinearLayout>

    </ScrollView>
    <ScrollView 
        Android:layout_width="match_parent"
        Android:layout_height="0dp"
        Android:background="#fff"
        Android:layout_weight="1"
        Android:scrollbarStyle="outsideInset"
            Android:scrollbarTrackVertical="@drawable/green_block"
        Android:fadeScrollbars="false"
        Android:layout_margin="8dp"
        Android:padding="16dp" >

        <LinearLayout Android:orientation="vertical" Android:layout_width="match_parent" Android:layout_height="wrap_content" Android:background="#aaa" >
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="outsideInset" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="outsideInset" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="outsideInset" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="outsideInset" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="outsideInset" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="outsideInset" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="outsideInset" />
        </LinearLayout>
    </ScrollView>
</LinearLayout>
182

上記の回答は私にとってはうまくいきませんでしたので、次のことを思いつきました。

enter image description here

これがあなたが達成したいものである場合、ここに行きます:

ListView:

<ListView
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:scrollbarStyle="outsideOverlay"
    Android:scrollbarThumbVertical="@drawable/scrollbar" />

スクロールバー描画可能:

<?xml version="1.0" encoding="utf-8"?>
<layer-list 
     xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item
        Android:drawable="@Android:color/transparent"
        Android:width="20dp"/>
    <item
        Android:drawable="@Android:color/holo_red_dark"
        Android:right="18dp" />
</layer-list>

この回答 に感謝

0
NecipAllef