我使用LinearLayout,并且不适合xhdpi和xxhdpi,就像这样。
on hdpi
xhdpi上的,xxhdpi:
我像这样使用LinearLayout
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/bg_gradien_menu"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/Recommendation"
android:textColor="@color/font"
android:layout_marginBottom="5dp"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/frame"
android:textColor="@color/font"
android:textSize="13sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:gravity="center_vertical|center_horizontal|center" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/frame_mtb_roadbike" />
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="right|center_vertical|center_horizontal"
android:orientation="vertical" >
<TextView
android:id="@+id/TextView04"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ct"
android:textColor="@color/font"
android:textSize="13sp" />
<Button
android:id="@+id/Button01"
android:layout_width="100dp"
android:layout_height="35dp"
android:layout_marginTop="7dp"
android:background="@drawable/btn_blue_focused"
android:gravity="center_vertical|center_horizontal|center"
android:text="80 cm"
android:textColor="@color/dec_font"
android:textSize="19sp"
android:textStyle="bold" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/TextView03"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:text="@string/adtional"
android:textColor="@color/font"
android:textSize="12sp" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:text="TextView"
android:textColor="@color/font"
android:textSize="11sp" />
</LinearLayout>
<View
android:id="@+id/view1"
android:layout_width="fill_parent"
android:layout_height="1dp"
android:layout_below="@+id/linearLayout2"
android:layout_centerHorizontal="true"
android:layout_marginTop="5dp"
android:background="@color/font" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="8dp"
android:text="@string/crank"
android:textColor="@color/font"
android:textSize="13sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:gravity="center" >
<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="20dp"
android:src="@drawable/crank_img" />
<LinearLayout
android:id="@+id/linearLayout3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:gravity="right|center_vertical|center_horizontal"
android:orientation="vertical" >
<TextView
android:id="@+id/TextView02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/crank_dec"
android:textColor="@color/font"
android:textSize="13sp" />
<Button
android:id="@+id/Button02"
android:layout_width="100dp"
android:layout_height="35dp"
android:layout_marginTop="7dp"
android:background="@drawable/btn_blue_focused"
android:gravity="center_vertical|center_horizontal|center"
android:text="80 cm"
android:textColor="@color/dec_font"
android:textSize="19sp"
android:textStyle="bold" />
<Button
android:id="@+id/button1"
android:layout_width="100dp"
android:layout_height="35dp"
android:layout_marginTop="5dp"
android:background="@drawable/btn_blue_focused"
android:gravity="center_vertical|center_horizontal|center"
android:text="80 cm"
android:textColor="@color/dec_font"
android:textSize="19sp"
android:textStyle="bold" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_gravity="bottom"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/linearLayout4"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:background="@drawable/rectangle_note"
android:orientation="vertical" >
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/disclaimer"
android:textSize="11sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/disclaimer_desc"
android:textSize="10sp" />
</LinearLayout>
<Button
android:id="@+id/btn_starover"
android:layout_width="fill_parent"
android:layout_height="@dimen/btn_height"
android:background="@drawable/btn_menu"
android:text="@string/again"
android:textColor="@color/white" />
</LinearLayout>
可以给我布局的建议吗?
答案 0 :(得分:1)
首先,评论:不要使用fill_parent
,因为它已被弃用。相反,您应该始终使用match_parent
。
要点:
您需要在窗口小部件上使用layout_weight
属性来在布局中分配未分配的空间。这将拉伸小部件以沿一个轴填充屏幕(取决于包含它们的线性布局的方向)。
长答案:
您的布局问题在于您使用wrap_content
来表示许多小部件的高度和宽度。这将导致窗口小部件的大小根据其自然&#34;大小,通常意味着足够大以适应内容,加上一些额外的像素用于填充和基于样式的边距。设置为包装内容的窗口小部件不会根据屏幕大小拉伸或缩小。它们总是倾向于倾向于父容器的左上角。
同样重要的是要注意,即使您将父容器设置为match_parent
,它包含的小部件也不会自动填充容器。例如,您可以创建以下内容:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"/>
</LinearLayout>
即使父布局设置为与屏幕宽度相匹配,按钮也会浮动在屏幕的左侧。
如果您希望窗体小部件在线性布局中拉伸以填充屏幕上的空白区域,那么您有一个很好的选择:layout_weight
。
当Android在线性布局中调整窗口小部件时,会进行两次传递。在第一轮中,它使用layout_width
和layout_height
属性。如果这些设置为wrap_content
,则窗口小部件将设置为&#34; natural&#34;第一遍中的大小。
在第二遍中,它会查看窗口小部件的layout_weight
属性。根据其权重将任何剩余像素分配给所有小部件。根本没有指定权重的小部件不能获得任何像素。指定权重的小部件获得与其权重成比例的像素(例如,权重为2的小部件的权重是权重为1的小部件的两倍)。通过这种方式,一个维度中的所有未分配像素可以分布在您的小部件中,无论您喜欢什么。希望他们都去一个小部件?赋予它1的权重,不要给任何其他小部件赋予权重。想要在所有小部件中平均分配空间吗?给他们所有的重量1。
重要的是要注意,权重只会沿一个轴分布像素:对于水平线性布局,这是X轴,对于垂直线性布局,这是Y轴。
答案 1 :(得分:-2)
您希望布局自动拉伸?您是否考虑过使用relativelayout作为根?