我需要为它创建2个片段布局吗?第一个布局是(FirstName,Gender,Category等),第二个布局是(LastName,DOB等......)
然后根据屏幕尺寸使用片段进行排列?
但我觉得不对好吗?因为那时我们需要决定在一个布局中需要放多少行。
实现它的最佳方法是什么?
在平板电脑中查看:
在手机中查看:
答案 0 :(得分:1)
使用单个片段或活动,然后针对不同的屏幕尺寸使用不同的布局。取向。如果使用单独的片段,则处理用户交互的代码将位于多个位置。使用单个片段或活动将使您的代码更加简单。
以下是一些示例布局,可帮助您入门。我正在使用所有TextView,但你可以很容易地用Spinner替换性别TextView。
对于手机或小屏幕,您可以使用此布局:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/first_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Chee"/>
<TextView
android:id="@+id/last_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Kin"/>
<TextView
android:id="@+id/gender"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Male"/>
<TextView
android:id="@+id/date_of_birth"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="dd/mm/yy"/>
</LinearLayout>
然后对于横向或更大的屏幕,这个将把姓氏和出生日期放在第二列。
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/first_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Chee"/>
<TextView
android:id="@+id/last_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Kin"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/gender"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Male"/>
<TextView
android:id="@+id/date_of_birth"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="dd/mm/yy"/>
</LinearLayout>
</LinearLayout>
为他们提供相同的文件名(例如person_info.xml),并将它们放在资源文件夹中,以用于不同的屏幕尺寸&amp;取向。 (例如布局和布局 - 土地)。
在您的片段onCreate()中,然后您可以根据用户的屏幕尺寸&amp;来扩充布局和Android处理选择正确的文件。取向。
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
fragmentView = inflater.inflate(R.layout.person_info, container, false);
firstNameTextView = (TextView) fragmentView.findViewById(R.id.first_name);
lastNameTextView = fragmentView.findViewById(R.id.last_name);
genderTextView = (TextView) fragmentView.findViewById(R.id.gender);
dobTextView = (TextView) fragmentView.findViewById(R.id.date_of_birth);
return fragmentView;
}
由于TextViews在两种布局中都具有相同的android:id,因此无论加载哪种布局,您的代码都可以将它们视为相同。