<< ASP.NETでメンテナンス中画面を表示する | main | 2017年モデルの Macbook、MacbookPro で 30 日を経過して AppleCare+ に加入できなくても、従来の AppleCare Protection Plan には加入できる >>
2017.08.15 Tuesday

Android 開発で ScrollView 内にある ListView が 1 行しか表示されない対処法 Kotlin 版

0

    JUGEMテーマ:プログラミング

     

    ScrollView を配置しなければ

    ListView はデータがある分、きちんと複数行が表示されます。

    しかし、画面全体をスクロールさせるために

    ScrollView を使うと表示が違ってきます。

     

    ここが結構ハマったポイントで

    なんと今まで複数行で表示されていた ListView が

    最初の 1 行しか表示されなくなってしまいました。

    試しに ScrollView を外すと、ListView は意図した通り

    データがある行数分表示されました。

     

    一体どういうことなのでしょう。

     

    色々模索したところ、ListView を拡張した

    カスタムリストビューを作って対応することにしたのでメモ。

     

    この方法を使うと、ScrollView を配置して

    画面全体がスクロールしてくれるし

    ListView も複数行表示されるようになります。

     

     

    まずはカスタムリストビューを作成します。

    ここでは CustomListView.kt という名前で作成しています。

    パッケージ名も任意で構いません。

     

    CustomListView.kt のソースコード

     

    package jp.co.projectname
    import android.content.Context
    import android.util.AttributeSet
    import android.view.View
    import android.widget.ListView
    
    class CustomListView : ListView {
    
        constructor(context: Context) : super(context) {}
        constructor(context: Context, attrs: AttributeSet)
             : super(context, attrs) {}
        constructor(context: Context, attrs: AttributeSet, defStyle: Int) 
             : super(context, attrs, defStyle) {}
    
        public override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
            val heightMeasureSpec_custom = View.MeasureSpec.makeMeasureSpec(
                    Integer.MAX_VALUE shr 2, View.MeasureSpec.AT_MOST)
            super.onMeasure(widthMeasureSpec, heightMeasureSpec_custom)
            val params = layoutParams
            params.height = measuredHeight
        }
    }

     

    あとはレイアウト.xml で作成した CustomListView を使うだけです。

     

    <jp.co.projectname.CustomListView
        android:id="@+id/custom_list_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

     

    プロパティは ListView を継承しているので

    ListView のものがそのまま使えます!

    jp.co.projectname はパッケージです。

    CustomListView に定義したパッケージを指定してください。

     

    以上(。・ω・)ノ゙

    コメント
    コメントする








     
    Sponsored Link
    Amazon
    Selected Entries
    Categories
    Archives
    Recent Comment
    • Windows7でタスクバーの時計が消えてしまった時に再び時計を表示する方法
      たろ (03/20)
    • ブラウザを立ち上げると勝手にhttp://ad.yieldmanager.com/の広告が表示されるときの対処法
      paromares (10/06)
    • ブラウザを立ち上げると勝手にhttp://ad.yieldmanager.com/の広告が表示されるときの対処法
      paromares (10/06)
    • ブラウザを立ち上げると勝手にhttp://ad.yieldmanager.com/の広告が表示されるときの対処法
      paromares (10/05)
    • ブラウザを立ち上げると勝手にhttp://ad.yieldmanager.com/の広告が表示されるときの対処法
      これで・・・ (06/14)
    • ブラウザを立ち上げると勝手にhttp://ad.yieldmanager.com/の広告が表示されるときの対処法
      撲滅迷惑アド (06/01)
    • ブラウザを立ち上げると勝手にhttp://ad.yieldmanager.com/の広告が表示されるときの対処法
      撲滅迷惑アド (05/29)
    • ブラウザを立ち上げると勝手にhttp://ad.yieldmanager.com/の広告が表示されるときの対処法
      nabe (05/12)
    • Excel 2003 を終了時にエラーが発生するのを意外な方法で解決
      ちゅらのひと (01/23)
    • Excel 2003 を終了時にエラーが発生するのを意外な方法で解決
      ディステル (01/18)
    Links
    Profile
    Search this site.
    Others
    Mobile
    qrcode
    Powered by
    30days Album
    無料ブログ作成サービス JUGEM