在视图中的元素之间扩展视图(Android XML)

时间:2012-08-30 15:29:03

标签: android xml android-layout android-xml

我想夸大一些视图,但在视图底部有一个按钮。我已经知道如何动态膨胀视图,然后在其他膨胀的视图下面膨胀按钮。但是,当只有几个膨胀的视图(导致组合视图占用的空间比整个屏幕少)时,按钮不会像我想的那样停留在页面底部。我的想法是,我需要通过将按钮设置为:android:layout_alignParentBottom(当我尝试在应用程序崩溃时尝试执行此操作时)将按钮对齐在相对布局的底部。

这是我所拥有的屏幕截图,然后是我想要的屏幕截图,您看到的所有项目都会膨胀到相对布局内的滚动视图中。我认为问题在于按钮被充气到滚动视图上,这只是物品的大小强迫它(不幸的是我太不知道如何膨胀到视图的不同部分)

enter image description here

左边图像的代码如下(我没有,左边的视图有错误): parentView:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="@drawable/blurybg"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">    
<ScrollView     
  android:layout_height="wrap_content" 
  android:id="@+id/scrollView1" 
  android:layout_width="fill_parent" >
<LinearLayout     
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:id= "@+id/parent_of_inflated_view_id">
</LinearLayout>   
</ScrollView>
</RelativeLayout>

childButton(其他视图与此类似)

<?xml version="1.0" encoding="utf-8"?>
<Button
xmlns:android="http://schemas.android.com/apk/res/android"
android:height="30dp"
android:layout_width="fill_parent"
android:background="@drawable/done"
android:layout_alignBottom ="@layout/availablerestaurants"
/>

用于创建充气机和充气按钮的Java。其他膨胀的观点与此类似(我当然使用相同的充气机)。我最后添加了膨胀的按钮,将其放在视图的底部。

LayoutInflater theInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
LinearLayout linLayout = (LinearLayout)findViewById(R.id.parent_of_inflated_view_id); 

    Button doneButtonCurrentRest=  (Button) theInflater.inflate(R.layout.done_button_availrest, null);
    linLayout.addView(doneButtonCurrentRest);

感谢您的帮助, 亚当

1 个答案:

答案 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" >

    <ScrollView
        android:id="@+id/scrollView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

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

    <Button
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:layout_alignParentBottom="true" />

</RelativeLayout>

你的代码怎么样?我可以看到几个错误:

1)您应该为按钮指定android:layout_height。如果没有此参数,将抛出异常。您使用的是android:height,但它与android:layout_height不同。

2)android:layout_alignBottom应指向id,但不指向布局。此外,我没有在按钮的单独布局中看到此属性的用途。

<强>更新

以下是评论中的问题解决方案:

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

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

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

        <Button
            android:id="@+id/button"
            android:layout_width="match_parent"
            android:layout_height="30dp"
            android:layout_weight="0" />
    </LinearLayout>

</ScrollView>

请注意,我使用android:fillViewport="true"作为ScrollView,因此它可以填满整个屏幕。我还使用android:layout_weight来正确地拉伸视图(您可以找到属性here的解释)。