2015-01-07 48 views
0

为什么滚动视图在按钮后面?我希望scrollview根据设备的高度拉伸,但不能让它工作,因为它总是在按钮后面。ScrollView在Android中后退按钮

enter image description here

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/detail_view" 
    style="@style/DetailView"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:orientation="vertical" > 

     <TextView 
      style="@style/TextView" 
      android:id="@+id/textview_message_title" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center"> 
     </TextView> 

     <TextView 
      style="@style/TextView" 
      android:id="@+id/textview_message_date" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center"> 
     </TextView> 

     <ScrollView 
      android:id="@+id/scrollview_message_text" 
      android:layout_height="wrap_content" 
      android:paddingBottom="20dip" 
      android:layout_width="fill_parent"> 
      <TextView 
       style="@style/TextView" 
       android:id="@+id/textview_message_text" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content"> 
      </TextView> 
     </ScrollView> 

    </LinearLayout> 

    <LinearLayout style="@style/DetailView.Buttons" 
      android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical"> 

     <Button 
      style="@style/Button" 
      android:layout_marginTop="5dip" 
      android:id="@+id/button_view_file" 
      android:text="@string/viewfile"/> 

    </LinearLayout> 

</RelativeLayout> 
+0

不要离开Bottom Padding,我估计。顺便说一下,你不能把按钮放在ScrollView中吗? –

+0

从发布的代码我不明白为什么'查看文件'按钮是它在哪里。可能是风格的东西? – njzk2

回答

1

这里是什么,我认为你工作副本正在寻找

1:移动的按钮相对布局的顶部(加一个id) 机器人:layout_alignParentBottom =”真正的”

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

     <Button 
      android:layout_height="wrap_content" 
      android:layout_width="wrap_content" 
      android:layout_marginTop="5dip" 
      android:id="@+id/button_view_file" 
      android:text="Button"/> 

    </LinearLayout> 

2:添加在布局包含滚动改变宽度和高度,以匹配父 但(临界)添加机器人:layout_above =‘@ ID /按钮’

<LinearLayout 
     android:layout_above="@id/buttons" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@android:color/darker_gray" 
     android:gravity="center" 
     android:orientation="vertical" > 

所以把他们放在一起:

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


    <!-- Buttons at the top of layout but aligned to the bottom --> 
    <LinearLayout android:id="@+id/buttons" 
       android:layout_alignParentBottom="true" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:orientation="vertical"> 

    <Button 
      android:layout_height="wrap_content" 
      android:layout_width="wrap_content" 
      android:layout_marginTop="5dip" 
      android:id="@+id/button_view_file" 
      android:text="Button"/> 

</LinearLayout> 


<!-- Linear layout to fill screen, but assigned to layout above the buttons --> 
<LinearLayout 
     android:layout_above="@id/buttons" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@android:color/darker_gray" 
     android:gravity="center" 
     android:orientation="vertical" > 

    <TextView 
      android:id="@+id/textview_message_title" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center"> 
    </TextView> 

    <TextView 
      android:id="@+id/textview_message_date" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center"> 
    </TextView> 

    <ScrollView 
      android:id="@+id/scrollview_message_text" 
      android:layout_height="wrap_content" 
      android:paddingBottom="20dip" 
      android:layout_width="fill_parent"> 
     <TextView 
       android:id="@+id/textview_message_text" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content"> 
     </TextView> 
    </ScrollView> 

</LinearLayout> 



</RelativeLayout> 

我删除了风格,所以我可以看到它在布局中的确认,然后再发布这个工作。希望这可以帮助。

相对布局允许您将元素叠加在彼此之上。所以,如果这不是你正在寻找的东西,你需要利用toLeft,toRight,above,below指令将布局推到正确的位置。

+0

哇,工作。我认为这可以在任何显示器上工作。再次感谢! –

+0

很高兴帮助,它应该工作正常。 RelativeLayout比嵌套LinearLayouts更灵活。它只是需要一点时间来适应它。 – mjstam

0

为什么要滚动视图这里后面的按钮?

因为是第一次降临在你的布局,ReletiveLayoutFrameLayout可以用来提供Z排序,所以后来进来具有较高的Z值布局如此这般up.Add android:layout_below = "@id/scrollview_message_text"要贵上每一个孩子线性布局或根据这种有关重要性的特征来排列您的观点。

1

发生这种情况是因为您使用Relative布局作为根布局。因此,无论布局被放置在同一个地方,但按键布局声明滚动视图后,所以它是滚动视图 如果你滚动视图

所以你应该把它定义为显示之前定义的按钮会发生相反的如上图所示下面来实现你想要的。

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/detail_view" 
    style="@style/DetailView"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:layout_above="@id/layout_bottom" 
     android:orientation="vertical" > 

     <TextView 
      style="@style/TextView" 
      android:id="@+id/textview_message_title" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center"> 
     </TextView> 

     <TextView 
      style="@style/TextView" 
      android:id="@+id/textview_message_date" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center"> 
     </TextView> 

     <ScrollView 
      android:id="@+id/scrollview_message_text" 
      android:layout_height="wrap_content" 
      android:paddingBottom="20dip" 
      android:layout_width="fill_parent"> 
      <TextView 
       style="@style/TextView" 
       android:id="@+id/textview_message_text" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content"> 
      </TextView> 
     </ScrollView> 

    </LinearLayout> 

    <LinearLayout 
      android:id="@+id/layout_bottom" 
     style="@style/DetailView.Buttons" 
      android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical"> 

     <Button 
      style="@style/Button" 
      android:layout_marginTop="5dip" 
      android:id="@+id/button_view_file" 
      android:text="@string/viewfile"/> 

    </LinearLayout> 

</RelativeLayout> 

,或者你可以尝试使用的LinearLayout作为根查看和设置

layout_height = "0dp" 
layout_weight = "1" 

布局采用这两种方式都会使按钮坚守的底部包含滚动视图

布局和顶部布局将获得所有剩余的高度。

好运