Android:添加子视图时ScrollView不会重新调整大小

时间:2014-04-09 15:17:44

标签: android scrollview android-linearlayout

我有一个ScrollView,我试图动态填充。这是包含ScrollView的XML:

<?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"
    android:background="#f6f5f5" >

<ScrollView
    android:id="@+id/scrollView1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#40ff0000"
    android:paddingBottom="70dp"
    android:paddingTop="20dp"
    android:paddingLeft="20dp"
    android:paddingRight="20dp">

    <LinearLayout
        android:id="@+id/option_list_container"
        android:background="#40ffff00"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dp"
            android:background="#292929"
            android:paddingBottom="5dp"
            android:paddingLeft="15dp"
            android:paddingTop="5dp"
            android:text="Stap 3/5"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="@color/white" />
    </LinearLayout>
</ScrollView>

这是我在ScrollvVew中插入的元素的XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

<np.custom.FontIcon
    android:id="@+id/option_icon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/calendar_circleround"
    android:textSize="40sp"
    android:gravity="center"
    android:text="@string/planit_selection_empty_circle"
    android:textColor="#292929" />

<TextView
    android:id="@+id/option_text"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center_vertical"
    android:layout_marginLeft="10dp"
    android:textAppearance="?android:attr/textAppearanceMedium" />

</LinearLayout>

这是我用来填充scrollview的代码:

    ArrayList<String> g = new ArrayList<String>();
    g.add("Fix a Bug");
    g.add("Buy a new PC");
    g.add("Make Coffee");
    g.add("Take a Break");
    g.add("Don't do that");
    g.add("Throw your hands in the air like you just don't care!");
    LinearLayout optionListLayout = (LinearLayout) rootView.findViewById(R.id.option_list_container);
    LayoutInflater inflater = LayoutInflater.from(getActivity());
    for(String p:g){
        View v = inflater.inflate(R.layout.planit_option_item, null);
        TextView optText = (TextView) v.findViewById(R.id.option_text);
        optText.setText(p);
        optionListLayout.addView(v);
    }

这一切都很好,除了它包含的ScrollView和LinearLayout的大小没有像我预期的那样出现。这是一个设备上的截图,它显示了文字在第二行时被删除:

enter image description here

那么我怎样才能确保线性布局重新调整大小以适应不同高度的儿童视图?

2 个答案:

答案 0 :(得分:0)

您的问题不是ScrollView无法容纳新生儿。问题是,当文本跨越多行时,由于R.layout.planit_option_item中的布局参数而被剪切。尝试更改ID TextView的{​​{1}},使其高度为@+id/option_text

答案 1 :(得分:0)

更改ScrollView元素的TextView以容纳两行:

...
<TextView
    android:id="@+id/option_text"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center_vertical"
    android:layout_marginLeft="10dp"
    android:maxLines="2"         
    android:singleLine="false"  
    android:textAppearance="?android:attr/textAppearanceMedium" />
...

这不是ScrollView的问题,它是您插入ScrollView的元素规范的问题。如果您希望在某些情况下可能有超过2行文本设置maxLines = X,其中X是您期望的最大行数。

如果这不起作用,请告诉我,我很乐意进一步提供帮助。