我的片段(FrameLayout
)(w:match_parent
,h:fill_parent
)有两个包含布局:
ScrollView
(w:match_parent
,h:fill_parent
)LinearLayout
(w:match_parent
,h:wrap_content
)我知道,为什么LinearLayout
只是覆盖了ScrollView
。我想让角落的ScrollView
停在LinearLayout
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.my.stackoverflow.example.problemFragment">
<!-- This is my Scrollview with an dynamic nums of TxtViews (Added by onViewCreated in my Fragment) -->
<ScrollView
android:id="@+id/ScrollViewId"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="top">
<LinearLayout
android:id="@+id/MessagesId"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>
</ScrollView>
<!-- Following a LinearLayout wich containing an EditBox and a Button)
Take a look at the bg color, maybe helpful for you?-->
<LinearLayout
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:background="@color/colorWhite"
android:layout_gravity="bottom"
android:gravity="bottom">
<EditText
android:id="@+id/MessageEditText"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:hint="Enter Message"
android:inputType="textAutoComplete"
android:textSize="20sp"
android:background="@color/colorWhite"
android:layout_marginLeft="5dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="12dp"
android:layout_weight="1"/>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginRight="10dp"
android:foregroundGravity="center"
android:background="@drawable/circle"/>
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="5dp"
android:tint="@color/colorWhite"
android:background="@drawable/ic_send_black_24dp"/>
</RelativeLayout>
</LinearLayout>
我的解决方案:
我已将android:layout_marginBottom="50dp"
添加到我的ScrollView,并将我的LinearLayout高度从wrap_content
设置为android:layout_height="50dp"
我认为这不是一个干净的解决方案,但它对我有用。
答案 0 :(得分:0)
如果底部显示的文本是TextView,则可以使用: LayoutBelow并将其置于底部布局上方的ScrollView和Layout之下。
<SrollView
some height
some width/>
<TextView
layoutBelow = scrollView
layoutAbove = LinearLayout
/>
<LinearLayout
layout with buttons
/>
答案 1 :(得分:0)
这应该有效:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/container"
tools:context="com.wembleystudios.engagementkit.service.socialbetting.view.activities.SignUpActivity">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignTop="@+id/layout"
>
</ScrollView>
<LinearLayout
android:layout_alignParentBottom="true"
android:layout_width="match_parent"
android:layout_height="25dp"
android:id="@+id/layout"
android:background="@color/black"
android:orientation="horizontal"></LinearLayout>
答案 2 :(得分:0)
您可以使用
替换根FrameLayout
来实现所需的布局
LinearLayout
和layout_weight
<LinearLayout
android:orientation="vertical">
<ScrollView
android:id="@+id/ScrollViewId"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
</ScrollView>
<LinearLayout
android:layout_height="wrap_content"
android:layout_width="match_parent">
</LinearLayout>
</LinearLayout>
此选项非常简单,您可以轻松地在布局的顶部或底部添加更多元素。缺点是布局必须执行两次。
RelativeLayout
和layout_above
<RelativeLayout>
<ScrollView
android:id="@+id/ScrollViewId"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/bottom_bar">
</ScrollView>
<LinearLayout
android:id="@+id/bottom_bar"
android:layout_height="wrap_content"
android:layout_width="match_parent">
</LinearLayout>
</RelativeLayout>
在为布局添加更多元素时,此选项最灵活。布局也必须执行两次。
FrameLayout
以及dimens.xml
<FrameLayout>
<ScrollView
android:id="@+id/ScrollViewId"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="@dimen/bottom_bar_height">
</ScrollView>
<LinearLayout
android:layout_height="@dimen/bottom_bar_height"
android:layout_width="match_parent">
</LinearLayout>
</FrameLayout>
此选项与您的解决方案类似,但应定义维度。它并不像你想象的那么肮脏的解决方案,它只是在你的布局中添加更多元素而不是编辑底栏布局时也不是很灵活。但性能更好,因为布局只执行一次。