我的布局如下。在某些mdpi屏幕上,内部LinearLayout是截止的。我想要发生的是确保内部LinearLayout始终显示其所有内容。我希望ImageView能够缩小尺寸,以确保它下面的LinearLayout显示其所有内容。在大屏幕上,ImageView应该与它的图像一样大(即wrap_content
)。
我尝试给ImageView一个layout_weight
为0.1,LinearLayout为layout_weight
为0.9(并给它们两个layout_height
为0dp),然后在更大的屏幕上显示ImageView最终成为布局的顶部。我希望根LinearLayout的内容居中。
因此,只有在需要时才能使ImageView缩小,以使其下方的LinearLayout始终完全可见?我正在尝试为不同的屏幕尺寸/分辨率创建多个布局文件。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
style="@style/tab_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
tools:context=".messages.MessagesHomeFragment"
>
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="40dp"
android:src="@drawable/elephant_large" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical"
>
<Button
android:id="@+id/button_send_voice_message"
android:layout_width="239dp"
android:layout_height="wrap_content"
android:text="Send a Voice Message" />
<Button
android:id="@+id/button_send_sms_message"
android:layout_width="239dp"
android:layout_height="wrap_content"
android:text="Send an SMS" />
<Button
android:id="@+id/button_view_messages"
android:layout_width="239dp"
android:layout_height="wrap_content"
android:text="Manage Messages" />
<Button
android:id="@+id/button_invite_sms_recipients"
android:layout_width="239dp"
android:layout_height="wrap_content"
android:text="Invite SMS Recipients" />
</LinearLayout>
</LinearLayout>
答案 0 :(得分:0)
我不确定这是可能的......如果有的话,我会尝试类似下面描述的布局(我没有尝试过,我担心图像会像这样的东西增长得多)。我只更改了ImageView的布局属性
如果仍然不起作用,基于ImageView定义自己的小部件应该不会太困难,只有当你得到的measureSpec小于图像时,你才需要覆盖onLayout方法缩小。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
style="@style/tab_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
tools:context=".messages.MessagesHomeFragment"
>
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:scaleType="centerInside"
android:layout_marginBottom="40dp"
android:src="@drawable/elephant_large" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical"
>
<Button
android:id="@+id/button_send_voice_message"
android:layout_width="239dp"
android:layout_height="wrap_content"
android:text="Send a Voice Message" />
<Button
android:id="@+id/button_send_sms_message"
android:layout_width="239dp"
android:layout_height="wrap_content"
android:text="Send an SMS" />
<Button
android:id="@+id/button_view_messages"
android:layout_width="239dp"
android:layout_height="wrap_content"
android:text="Manage Messages" />
<Button
android:id="@+id/button_invite_sms_recipients"
android:layout_width="239dp"
android:layout_height="wrap_content"
android:text="Invite SMS Recipients" />
</LinearLayout>
</LinearLayout>
答案 1 :(得分:0)
通过使用下面的布局,我能够完成我想要做的事情。关键是将根LinearLayout的高度设置为wrap_content
,并将ImageView的layout_weight
设置为1。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
style="@style/tab_fragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:orientation="vertical"
>
<ImageView
android:id="@+id/elephantImageView"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:scaleType="fitCenter"
android:layout_marginBottom="20dp"
android:src="@drawable/elephant_large"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical"
>
<Button
android:id="@+id/button_send_voice_message"
android:layout_width="239dp"
android:layout_height="wrap_content"
android:text="Send a Voice Message" />
...
</LinearLayout>
</LinearLayout>