【发布时间】:2018-01-19 12:07:50
【问题描述】:
我正在尝试实现一个动态布局,其中有 2 个片段(1 个占据屏幕顶部 80%,另一个占据屏幕底部 20%),我希望能够动态隐藏底部片段并拉伸顶部片段以填满屏幕。
如果有另一种方法,我想知道,但目前我只知道一种方法。所以我有 2 个 FrameLayout,我正在尝试将顶部 FrameLayout(main_container)的 layout_weight 设置为 5。
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.jobby.jobbydriver.activity.main"
android:id="@+id/activity_main"
android:orientation="vertical"
android:background="@color/ColorBG"
android:weightSum="5"
android:layout_height="match_parent"
android:layout_width="match_parent" >
<FrameLayout
android:id="@+id/main_container"
android:layout_weight="4"
android:layout_height="0dp"
android:layout_width="match_parent" />
<FrameLayout
android:id="@+id/second_container"
android:layout_weight="1"
android:layout_height="0dp"
android:layout_width="match_parent" />
</LinearLayout>
我的代码,
FrameLayout frameLayout = findViewById(R.id.main_container);
FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) frameLayout.getLayoutParams();
params.weight = 5.0f; // "weight" is red, (Cannot resolve symbol 'weight')
frameLayout.setLayoutParams(params);
在倒数第二行,params.weight 显示为红色,因此 weight 在这里不是 params 的值。这适用于 LinearLayout,但不适用于 FrameLayout,所以我不确定我做错了什么。
【问题讨论】:
-
FrameLayout在LinearLayout内,所以它有LinearLayout.LayoutParams,而不是FrameLayout.LayoutParams。您将在LinearLayout.LayoutParams中找到weight字段。 -
@MikeM.,您的评论几乎是一个答案,而且是一个正确的答案。您不想将其更改为答案吗?
-
@VladMatvienko 我实际上是想找一个副本,但我现在正忙着聊天。如果您愿意,请随时将其发布为答案。
-
@MikeM.,我会先检查是否有重复
-
谢谢,成功了
标签: android android-studio layout android-framelayout