之間創建一個 '的SplitContainer' 據我要實現以下ScreenUI截圖(Android的API> = 10):
你有一個GoogleMapsSupportFragement
和一個ListView
,共享視圖的剩餘高度(height
在所述應用程序開始被計算,並且應用僅在PortraitMode
捉迷藏)
的ListView
容器的行爲應該類似於Android的Notificatio n菜單,因此用戶可以滑入和滑出列表,但如果用戶釋放視圖(觸摸),則動畫開始。
到目前爲止,我實現了兩個LinearLayout
(Map
和ListView
),這是由紅線(LinearLayout
)分開。我管理,ListView顯示/隱藏點擊紅線,但它看起來奇怪,如果我隱藏ListView,因爲地圖重繪並留下黑色空間。
問題是:什麼s best way to implement (LinearLayout? Fragments?)? Do you know examples for the
onTouchBehaviour`(類似於打開的Notication Menu)?
這裏是我的實現:
//function is triggered at click on the redline-button
private void toggleOverlayList(){
//TEST CASE API >= 11
int mListHeight = ((LinearLayout) findViewById(R.id.map_list)).getLayoutParams().height;
Log.i(DEBUG,"toggleOverlayList() -> currentHeight:" + mListHeight);
if(mListHeight == 0){
((LinearLayout) findViewById(R.id.map_wrapper)).getLayoutParams().height = mDisplayHeight;
((LinearLayout) findViewById(R.id.map_list)).getLayoutParams().height = mDisplayHeight;
((LinearLayout) findViewById(R.id.main_screen)).requestLayout();
}
else{
((LinearLayout) findViewById(R.id.map_wrapper)).getLayoutParams().height = 2* mDisplayHeight;
((LinearLayout) findViewById(R.id.map_list)).getLayoutParams().height = 0;
((LinearLayout) findViewById(R.id.main_screen)).requestLayout();
}
}
Layout.xml
<LinearLayout
android:id="@+id/main_screen"
android:animateLayoutChanges="true"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/map_wrapper">
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.MapFragment"
/>
</LinearLayout>
<LinearLayout
android:id="@+id/map_seperator"
android:layout_height="20dp" >
</LinearLayout>
<LinearLayout
android:id="@+id/map_list">
<ListView
android:id="@+id/listView1" >
</ListView>
</LinearLayout>
</LinearLayout>
好庫!但我必須檢查是否可以「劃分」主視圖,而不是重疊整個屏幕。 – longilong