2

Scrollview 内に Listview があり、そのデータをコード ビハインドに手動でバインドしています。私の主な問題は、データをバインドすると、リストビューの高さが拡張されないことです。に設定しようとしましたがwrap_contentfill_parent何も機能しません。ここに私のXMLがあります

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/parentScrollview"
android:layout_width="match_parent"
android:layout_height="wrap_content" >

<RelativeLayout
>

<LinearLayout >

    <ImageView
        />

    <LinearLayout
         >

        <TextView />

        <TextView />

        <LinearLayout >

            <TextView/>

            <TextView/>
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <TextView/>

            <TextView />
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

<View />

<TextView/>

<ScrollView
    android:id="@+id/childScrollView"
    android:layout_width="match_parent"
    android:layout_height="375dp"
    android:layout_below="@+id/view1"
    android:layout_centerHorizontal="true"
    android:layout_marginLeft="10dip"
    android:layout_marginRight="10dip"
    android:layout_marginTop="18dp"
    android:background="@drawable/scrollviewborder"
    android:scrollbarStyle="insideInset" >

    <ListView
        android:id="@+id/listFriends"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:paddingBottom="2dip"
        android:paddingLeft="2dip"
        android:paddingRight="2dip"
        android:paddingTop="2dip"
        >
    </ListView>


</ScrollView>

<Button />

</RelativeLayout>

</ScrollView>

ネストされた ListView であることを確認してください。ここに私のコードビハインドがあります

    ArrayList<HashMap<String, String>> friendList = new ArrayList<HashMap<String, String>>();
    // adding database values to HashMap key => value
    for (int i = 0; i < friendName.length; i++) {
        // creating new HashMap
        HashMap<String, String> friend = new HashMap<String, String>();
            //merchant.put(KEY_ID, merchantIdArray[i]); 
            friend.put(KEY_FRIEND_NAME, friendName[i]);
            friend.put(KEY_THUMB_URL,imageIDs[i]);
        friendList.add(friend);
    }

    list=(ListView)findViewById(R.id.listFriends);
     adapter =new LazyAdapter(this, friendList);        
     list.setAdapter(adapter);

問題に見えるのは?

編集 どのスクロールを使用する必要があるかを検証するために、このコードを追加しました

    parentScrollView= (ScrollView) findViewById(R.id.parentScrollview);
    parentScrollView.setOnTouchListener(new View.OnTouchListener() {

        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub
             //Log.v(TAG,"PARENT TOUCH");
             findViewById(R.id.childScrollView).getParent().requestDisallowInterceptTouchEvent(false);
            return false;
            }
        });
    childScrollView= (ScrollView) findViewById(R.id.childScrollView);
    childScrollView.setOnTouchListener(new View.OnTouchListener() {

        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub
             //Log.v(TAG,"PARENT TOUCH");
             findViewById(R.id.childScrollView).getParent().requestDisallowInterceptTouchEvent(true);
            return false;
        }
    });

これに関する主な理由は、Facebook フレンドリストをこの Listview 内に配置して、スクロール可能にすることです。

4

2 に答える 2

1

問題は次のとおりです( Romain Guyがここで述べたように):

ListView を使用してスクロールしないようにすることは、非常にコストがかかり、ListView の目的全体に反します。これを行うべきではありません。代わりに LinearLayout を使用してください。

于 2012-09-07T06:32:00.953 に答える
0

@Androyd Friendは、listviewをscrollView内に配置せず、scrollviewをlistview内に配置しない場合は常に優れています。次に、listviewを親に塗りつぶすか、300dpまたは必要な高さのdpsで高さを修正します...

于 2012-09-07T06:33:26.323 に答える