我有这个布局,当我在第一个模拟器上运行应用程序时,布局显示我想要的所有元素。但是当我在具有较小屏幕的第二个仿真器上启动它时,布局的元素将被错过而不是被安排。
我的问题:如何使所有设备的布局独立,因为并非所有设备都具有相同的屏幕尺寸。换句话说,即使模拟器的屏幕大小发生变化,我也希望元素的位置保持静止。
这是第一个模拟器截图:
这是第二个模拟器截图:
这是布局代码:
<?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="@color/light_primary_color"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginLeft="@dimen/feed_item_margin"
android:layout_marginRight="@dimen/feed_item_margin"
android:layout_marginTop="@dimen/feed_item_margin"
android:background="@drawable/bg_parent_rounded_corner"
android:orientation="vertical"
android:paddingBottom="@dimen/feed_item_padding_top_bottom"
android:paddingTop="@dimen/feed_item_padding_top_bottom" >
<com.android.volley.toolbox.NetworkImageView
android:id="@+id/summary_image_View"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_marginBottom="20dp"
android:scaleType="fitXY"
/>
<LinearLayout
android:weightSum="3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingLeft="@dimen/feed_item_padding_left_right"
android:paddingRight="@dimen/feed_item_padding_left_right" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_weight="1"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingLeft="@dimen/feed_item_profile_info_padd" >
<com.android.volley.toolbox.NetworkImageView
android:id="@+id/summary_first_team_logo"
android:layout_width="60dp"
android:layout_height="60dp"
android:scaleType="fitCenter" />
<TextView
android:id="@+id/summary_first_team"
android:layout_marginTop="20sp"
android:layout_marginLeft="20sp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/primary_dark_color"
android:textSize="20sp"
android:text="Test"
/>
</LinearLayout>
<LinearLayout
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="@dimen/feed_item_profile_info_padd" >
<TextView
android:id="@+id/summary_match_date"
android:layout_width="match_parent"
android:background="@color/light_primary_color"
android:layout_height="wrap_content"
android:textAlignment="center"
android:textColor="@color/primary_text"
android:textSize="20sp"
android:text="Test"
/>
<TextView
android:textAlignment="center"
android:id="@+id/summary_match_result"
android:layout_width="match_parent"
android:background="@color/light_primary_color"
android:layout_height="wrap_content"
android:textColor="@color/primary_text"
android:textSize="20sp"
android:text="Test"
/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_marginLeft="10sp"
android:layout_weight="1"
android:paddingLeft="20sp"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<TextView
android:id="@+id/summary_second_team"
android:layout_marginTop="20sp"
android:layout_marginRight="10sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/primary_dark_color"
android:textSize="20sp"
android:text="Test"
/>
<com.android.volley.toolbox.NetworkImageView
android:id="@+id/summary_second_team_logo"
android:layout_width="60dp"
android:layout_height="60dp"
android:scaleType="fitCenter" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
答案 0 :(得分:0)
不是按照上面的方式实现标签,而是查看TabLayout
小部件。
它允许您更轻松地制作标签,通常更好的做法是使用TabLayout
而非许多LinearLayout
s。
使用TabLayout
还可以设置模式(使用setTabMode(int)
),这样您就可以使标签可滚动,以便它们更适合较小的屏幕尺寸。
答案 1 :(得分:0)
当您在线性布局中使用android:weightSum
时,我建议您在子线性布局中使用android:weightSum
,因为您正在分配&#34; 60dp&#34;在图像视图中,为其指定一些权重。