嵌入在ScrollView中的LinearLayout中的顶视图只有一半可见

时间:2012-07-01 01:14:10

标签: android android-layout

在我的应用程序中,我将成对的微调器插入到一个linearlayout中,它位于scrollview中。问题是,当我添加足够的微调器时,前两个部分被遮挡。这就是我所说的。

:(

<LinearLayout
android:id="@+id/ChordHeader"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@android:drawable/bottom_bar"
android:orientation="horizontal" >

<Button
    android:id="@+id/addChordButton"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_weight="1"
    android:text="Add Chord" />

<TextView
    android:id="@+id/spacetext1"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:text="  "
    android:textAppearance="?android:attr/textAppearanceLarge" />

<Button
    android:id="@+id/removeChordButton"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_weight="1"
    android:text="Remove Chord" />
 </LinearLayout>

 <ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true" >

<LinearLayout
    android:id="@+id/ChordList"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:isScrollContainer="true"
    android:orientation="vertical"
    android:weightSum="100" >

(旋转器插入此处)

</LinearLayout>
 </ScrollView>
 </LinearLayout>

以下是将微调器插入列表的代码,如果问题出在那里。

    Spinner chordName = new Spinner(this);
    Spinner chordType = new Spinner(this);

    LinearLayout container = new LinearLayout(this);
    container.setOrientation(LinearLayout.HORIZONTAL);
    LinearLayout chordList = (LinearLayout) findViewById(R.id.ChordList);

    chordName.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, 80, 50));
    chordName.setAdapter(nameAdapter);
    container.addView(chordName); //add name spinner to container

    chordType.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, 80, 50));
    chordType.setAdapter(typeAdapter);
    container.addView(chordType); //add type spinner to container
    container.setBackgroundResource(android.R.drawable.bottom_bar);
    container.setPadding(10, 0, 10, 0);


    chordList.addView(container); //add container to list layout

2 个答案:

答案 0 :(得分:1)

这是我的布局..尝试一下:)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent">

    <RelativeLayout
        android:id="@+id/ChordHeader"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:drawable/bottom_bar">

        <Button
            android:id="@+id/addChordButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:text="Add Chord" />


        <Button
            android:id="@+id/removeChordButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:ellipsize="middle"
            android:text="Remove Chord" />

    </RelativeLayout>

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/ChordHeader"
        >

        <LinearLayout
            android:id="@+id/ChordList"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical" >

        </LinearLayout>
    </ScrollView>

</RelativeLayout>

现在对于按钮,如果你真的希望它们具有相同的尺寸,你可能想要设置尺寸。 以下是在Android中存储维度的方法:More Resource Types: Dimension

答案 1 :(得分:0)

尝试获取对列表中顶部项目的引用,然后在完成添加微调器后请求关注它。

chordList.getChildAt(0).requestFocus();