我需要爲它創建2個片段佈局嗎?第一佈局是(名字,性別,類別等),第二佈局是(姓氏,DOB等...)Android佈局 - 如何根據屏幕尺寸創建動態桌面佈局?
然後使用片段根據屏幕大小進行排列?
但我不認爲是好的嗎?因爲那時我們需要決定我需要在一個佈局中放置多少行。
實現它的最佳方法是什麼?
查看片劑:
查看在電話:
我需要爲它創建2個片段佈局嗎?第一佈局是(名字,性別,類別等),第二佈局是(姓氏,DOB等...)Android佈局 - 如何根據屏幕尺寸創建動態桌面佈局?
然後使用片段根據屏幕大小進行排列?
但我不認爲是好的嗎?因爲那時我們需要決定我需要在一個佈局中放置多少行。
實現它的最佳方法是什麼?
查看片劑:
查看在電話:
使用一個單一的片段或活動,然後使用不同的佈局不同的屏幕尺寸&方向。如果使用單獨的片段,處理用戶交互的代碼將位於多個位置。使用單個片段或活動將使您的代碼更簡單。
以下是一些可幫助您入門的佈局示例。我使用所有的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),並把他們在資源文件夾爲不同的屏幕尺寸&方向。 (例如佈局& layout-land)。
在你的片段onCreate()中,然後膨脹佈局和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具有相同的機器人:ID在這兩個佈局,你的代碼可以把他們相同的,無論其佈局被加載。
非常感謝。你的建議很好的解決了我的問題,因爲起初我也認爲如果使用單獨的片段,那麼代碼的維護將會令人頭疼。 – guaz 2014-09-01 08:11:53