我正在尝试为Android构建应用程序,并为片段创建了一个xml文件。
在预览中, Nexus 4 我可以看到项目(buttons, text view, etc.)
占用了所有空间,但是当我在手机上运行我的应用时( s6 edge + )有1/5的屏幕免费。
wrap_content
的所有内容都设置了我的高度,我只使用dp
单位的填充。
我该如何解决这个问题?我应该更换所有包装内容'达到所有高度的特定值?
我的xml文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:background="@drawable/gradient"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="35dp"
android:text="Title1"
android:id="@+id/textView"
android:textColor="#fff"
android:layout_gravity="center_horizontal"
android:textSize="30dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="5dp"
android:textColor="#fff"
android:text="Title2"
android:id="@+id/textView3"
android:textSize="15dp"
android:layout_gravity="center_horizontal" />
<LinearLayout
android:layout_width="match_parent"
android:paddingTop="15dp"
android:paddingLeft="100dp"
android:layout_height="wrap_content">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/first"
android:layout_marginRight="15dp"
android:id="@+id/imageView" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginRight="17dp"
android:background="@drawable/second"
android:id="@+id/imageView2" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/third"
android:id="@+id/imageView3" />
</LinearLayout>
<Button
android:layout_width="270dp"
android:layout_marginTop="15dp"
android:background="@drawable/btnstyle"
android:layout_height="wrap_content"
android:text="button3"
android:gravity="left|center_vertical"
android:paddingLeft="65dp"
android:textColor="#fff"
android:id="@+id/button1"
android:layout_gravity="center_horizontal" />
<Button
android:layout_width="270dp"
android:layout_marginTop="15dp"
android:background="@drawable/btnstyle"
android:layout_height="wrap_content"
android:text="button4"
android:gravity="left|center_vertical"
android:paddingLeft="65dp"
android:textColor="#fff"
android:id="@+id/button2"
android:layout_gravity="center_horizontal" />
<Button
android:layout_width="270dp"
android:layout_marginTop="15dp"
android:background="@drawable/btnstyle"
android:layout_height="wrap_content"
android:text="button5"
android:gravity="left|center_vertical"
android:paddingLeft="65dp"
android:textColor="#fff"
android:id="@+id/button3"
android:layout_gravity="center_horizontal" />
<Button
android:layout_width="270dp"
android:layout_marginTop="15dp"
android:background="@drawable/btnstyle"
android:layout_height="wrap_content"
android:text="button6"
android:gravity="left|center_vertical"
android:paddingLeft="65dp"
android:textColor="#fff"
android:id="@+id/button4"
android:layout_gravity="center_horizontal" />
<Button
android:layout_width="270dp"
android:layout_marginTop="15dp"
android:background="@drawable/btnstyle"
android:layout_height="wrap_content"
android:text="button7"
android:gravity="left|center_vertical"
android:paddingLeft="65dp"
android:textColor="#fff"
android:id="@+id/button5"
android:layout_gravity="center_horizontal" />
<Button
android:layout_width="270dp"
android:layout_marginTop="15dp"
android:background="@drawable/btnstyle"
android:layout_height="wrap_content"
android:text="button8"
android:gravity="left|center_vertical"
android:paddingLeft="65dp"
android:alpha="0.7"
android:textColor="#fff"
android:id="@+id/button6"
android:layout_gravity="center_horizontal" />
</LinearLayout>
答案 0 :(得分:1)
好吧我确实做了一些改变,
虽然我真的不明白哪个视图应该在你的布局中做什么。所以我以这种布局的方式管理它的空间以支持多屏幕,但你应该考虑根据你想要定位的屏幕制作不同的布局。
请试试这个
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.20"
android:orientation="vertical">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:paddingTop="35dp"
android:text="Title1"
android:textColor="#000"
android:textSize="30dp" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:paddingTop="5dp"
android:text="Title2"
android:textColor="#000"
android:textSize="15dp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.10"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="100dp"
android:paddingTop="15dp">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="15dp"
android:background="@android:color/holo_purple" />
<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginRight="17dp"
android:background="@android:color/holo_purple" />
<ImageView
android:id="@+id/imageView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/holo_purple" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.75"
android:orientation="vertical">
<Button
android:id="@+id/button1"
android:layout_width="270dp"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_gravity="center_horizontal"
android:layout_margin="10dp"
android:background="@android:color/holo_purple"
android:gravity="left|center_vertical"
android:paddingLeft="65dp"
android:text="button3"
android:textColor="#fff" />
<Button
android:id="@+id/button2"
android:layout_width="270dp"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_gravity="center_horizontal"
android:layout_margin="10dp"
android:background="@android:color/holo_purple"
android:gravity="left|center_vertical"
android:paddingLeft="65dp"
android:text="button4"
android:textColor="#fff" />
<Button
android:id="@+id/button3"
android:layout_width="270dp"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_gravity="center_horizontal"
android:layout_margin="10dp"
android:background="@android:color/holo_purple"
android:gravity="left|center_vertical"
android:paddingLeft="65dp"
android:text="button5"
android:textColor="#fff" />
<Button
android:id="@+id/button4"
android:layout_width="270dp"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_gravity="center_horizontal"
android:layout_margin="10dp"
android:background="@android:color/holo_purple"
android:gravity="left|center_vertical"
android:paddingLeft="65dp"
android:text="button6"
android:textColor="#fff" />
<Button
android:id="@+id/button5"
android:layout_width="270dp"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_gravity="center_horizontal"
android:layout_margin="10dp"
android:background="@android:color/holo_purple"
android:gravity="left|center_vertical"
android:paddingLeft="65dp"
android:text="button7"
android:textColor="#fff" />
<Button
android:id="@+id/button6"
android:layout_width="270dp"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_gravity="center_horizontal"
android:layout_margin="10dp"
android:alpha="0.7"
android:background="@android:color/holo_purple"
android:gravity="left|center_vertical"
android:paddingLeft="65dp"
android:text="button8"
android:textColor="#fff" />
</LinearLayout>
</LinearLayout>
输出
更新
使用Views
同时将layout_weight
宽度设置为0dp
时,您可以采取以此方式水平分布Buttons
均衡的事项,在给定的示例中,我展示了两个width
水平的空间。注意它的layout_weight
和<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="horizontal">
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:layout_weight="0.5"
android:text="One"
android:textAllCaps="false" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:layout_weight="0.5"
android:text="Two"
android:textAllCaps="false" />
</LinearLayout>
Views
如果您希望两个parent layout
垂直占据相同的空间,可以使用以下示例,使view's
的方向垂直,0dp
高度<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.5"
android:src="@drawable/goku" />
<ImageView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.5"
android:src="@drawable/gohan" />
</LinearLayout>
[AS] table_alias
答案 1 :(得分:0)
您应该使用布局权重。
来自docs
布局重量
LinearLayout还支持为各个孩子分配权重 使用android:layout_weight属性。此属性指定一个 对于视图的“重要性”价值应该是多少空间 占据屏幕上。较大的重量值允许它扩展到 填充父视图中的任何剩余空间。子视图可以指定一个 权重值,然后视图组中的任何剩余空间 按照宣称的体重比例分配给儿童。 默认权重为零。
例如,如果有三个文本字段,其中两个声明了一个 重量为1,而另一个没有给予重量,第三个文字字段 没有重量不会增长,只会占据所需的面积 它的内容。另外两个将同等扩展以填补空间 测量完三个场后剩下的。如果第三个字段是 然后给出2的权重(而不是0),那么它现在被宣布更多 比其他人都重要,所以它剩下的一半 空间,而前两个平均分享其余部分。