gpt4 book ai didi

android - LinearLayout layout_weight = 1, layout_height=0dp only 只在预览时有效?

转载 作者:行者123 更新时间:2023-11-29 21:20:38 25 4
gpt4 key购买 nike

我在边栏中有三个线性布局。我希望第一个填充剩余的空间,另外两个将指定它们的高度。我遇到的问题是第一个 View 根本没有拉伸(stretch)以填充高度。请参阅下面的代码。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="#FF44807f"
android:id="@+id/musicSideBar">
<!-- I want this layout to fill whatever vertical space remains -->
<LinearLayout
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="0dp"
android:background="#FF003938"
android:layout_weight="1">
</LinearLayout>

<!-- this has a list of ImageView, so I set it to wrap_content -->
<LinearLayout
android:layout_below="@id/sidebarHeader"
android:id="@+id/mediaControls"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="8dp"
android:paddingTop="8dp"
android:paddingRight="8dp"
android:paddingBottom="8dp"
android:background="#FF095150"
>

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/play_pause_btn"
android:src="@drawable/play_icon"
style="@style/media_button"
/>

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/stop_btn"
android:src="@drawable/stop_icon"
style="@style/media_button"
/>



<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/prev_btn"
android:src="@drawable/prev_icon"
style="@style/media_button"
/>

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/next_btn"
android:src="@drawable/next_icon"
style="@style/media_button"
/>

</LinearLayout>

<!-- A custom view that I specify it's height in onMeasure using setMeasuredDimensions -->
<jaywhy13.gycweb.components.NowPlayingView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FF44807f"
android:paddingTop="10dp"
/>


</LinearLayout>

它在 Android Studio 预览版中的工作方式与我认为的一样 Android Studio Preview

但是当我通过模拟器运行它时它不起作用。 Simulator

您可以看到,对于模拟器,线性布局根本没有拉伸(stretch)。

最佳答案

layout_weight 不会像这样工作,要使其正常工作,您需要为 LinearLayout 内的所有布局设置布局权重,这将修复您不想要的所有 3 种布局的高度。

您应该将第一个布局的高度设置为 match_parent,将下一个布局设置为 wrap_content,并将父布局的重力设置为底部。

这将首先放置高度为 wrap_content 的最底部布局,然后放置高度为 wrap_content 的第二个布局,最后放置高度为 wrap_content 的最顶部布局

例子:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="#FF44807f"
android:gravity="bottom" <!--here-->
android:id="@+id/musicSideBar">
<!-- I want this layout to fill whatever vertical space remains -->
<LinearLayout
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
android:background="#FF003938"
>
</LinearLayout>

<!-- this has a list of ImageView, so I set it to wrap_content -->
<LinearLayout
android:layout_below="@id/sidebarHeader"
android:id="@+id/mediaControls"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="8dp"
android:paddingTop="8dp"
android:paddingRight="8dp"
android:paddingBottom="8dp"
android:background="#FF095150"
>

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/play_pause_btn"
android:src="@drawable/play_icon"
style="@style/media_button"
/>

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/stop_btn"
android:src="@drawable/stop_icon"
style="@style/media_button"
/>



<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/prev_btn"
android:src="@drawable/prev_icon"
style="@style/media_button"
/>

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/next_btn"
android:src="@drawable/next_icon"
style="@style/media_button"
/>

</LinearLayout>

<!-- A custom view that I specify it's height in onMeasure using setMeasuredDimensions -->
<jaywhy13.gycweb.components.NowPlayingView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FF44807f"
android:paddingTop="10dp"
/>


</LinearLayout>

关于android - LinearLayout layout_weight = 1, layout_height=0dp only 只在预览时有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20776111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com