2013-08-30 52 views
1

我有一個ListView,其中每個項目可以側向滑動,以便另一個視圖將滑入並取代它。我已經將每個列表行作爲兩個視圖在一個水平的RelativeLayout內部實現。其中一個意見最初在屏幕之外。 enter image description hereAndroid ListView:滑入視圖不顯示

問題在於,我不能使屏幕視圖在滑入屏幕時呈現,除非它最初部分在屏幕上(如圖所示),甚至這個技術似乎只在隱形視圖在右側時才起作用。

有沒有更好的方法來實現這個目標?我試圖在幻燈片中調用.invalidate()和.setVisibility(VISIBLE),但沒有任何效果。

更新:

與渲染的問題似乎是最初隱藏視圖總是有寬度0,即使我嘗試在滑動過程中以編程方式改變它。我在兩個視圖周圍使用RelativeLayout來使可見視圖完全適合屏幕。

這是一個要求,視圖可以被手指拖動。我目前在View.OnTouchListener中偵聽MotionEvents來完成該操作。

回答

1

你的問題很含糊,因爲你沒有提供任何代碼或你滑入/滑出視圖的方法。如果您尚未使用View切換器或ViewFlipper,這是不夠的嗎?

您還可以使用http://developer.android.com/reference/android/widget/ViewSwitcher.htm獲得滑動效果,這隻允許2個視圖,並將通過動畫滑動一個視圖和另一個視圖 - 這可能更接近您的要求,但有一些小缺點。視圖滑塊以類似的方式工作以查看鰭狀肢(這可讓您擁有多個視圖),下面是viewflipper的一些示例代碼。

http://developer.android.com/reference/android/widget/ViewFlipper.html

<ViewFlipper 
    android:id="@+id/flipper" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" > 

    YOUR VIEWS 

    </LinearLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" > 

     YOUR VIEWS 

    </LinearLayout> 

</ViewFlipper> 

然後,您可以添加自己的動畫,並呼籲showNext上揮動或其他行動(在幻燈片你的情況,並滑出動畫)這兩種觀點之間設置動畫

/* Flipper animations */ 
yourFlipper.setInAnimation(AnimationUtils.loadAnimation(this,R.anim.slide_in)); 
yourFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_out)); 

youFlipper.showNext(); 

只需將視圖腳本放入您的自定義單元格中即可。這處理隱藏和顯示意味着你不必亂用可見的等等,儘管我感謝你可能得不到完全相同的期望效果。

+0

謝謝! 我正在使用OnTouchListener並用手指移動視圖(拖動)。使用Switcher/Flipper也是很自然的嗎? –

+0

所以澄清:拖/滑動工作正常,只有隱藏的視圖不顯示,除非它最初部分在屏幕上。 –

+0

這取決於你,它可以消除所有雜亂的拖拽和處理,並且如果使用正確的佈局將自動縮放,但是可能無法獲得確切的預期效果。通過一些黑客攻擊,你可能會複製它。如果您必須拖動它,請發佈代碼以顯示您正在處理屏幕外視圖以及拖動/動畫代碼。另外,你也許可以在屏幕上顯示1px,但隱藏,並將其設置爲拖動時可見?這不是一個優雅的解決方案,但是你說如果它部分在屏幕上,它就可以工作。 – pfairbairn