我一直被困在這個幾天了,無法弄清楚我做錯了什麼(希望它不是我錯過的東西)。在一個片段中的可滾動視圖
要求
我有一個包含片段,片段的LinearLayout一個FragmentPager。該佈局有一個按鈕和一個視圖,可以根據用戶導航進行更改。
所有的視圖,如GridView和ListView都能很好地工作。但我需要提出另一種適合概念上有點不同的片段的觀點。該視圖必須是可垂直滾動的,因爲它的高度可能比屏幕大。我不在乎視圖是以編程方式創建的,還是動態地從.xml中誇大。我嘗試了兩種方法,兩者都給出了相同的結果。
溶液1(非常更優選)
我試圖使自定義視圖,並推動它滾動型的內部。這是相關的.xml:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scroller"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true" >
<com.myPackage.MyView
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
</com.myPackage.MyView>
</ScrollView>
我使自定義視圖顯示一個非常大的矩形,因此它超過了屏幕大小。爲MyView的 代碼:
package com.myPackage.MyView;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;
public class MyView extends View {
public MyView(Context context) {
super(context);
}
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
Paint paint = new Paint();
paint.setColor(Color.RED);
canvas.drawRect(0, 0, 100, 8000, paint);
}
}
這樣做的問題是,ScorllView不會滾動。
我試圖刪除fillViewport(正如我在不同的答案中看到的),導致什麼都沒有顯示, 我也嘗試添加ScrollView內外的佈局,但沒有。嘗試所有「fill_parent」/「wrap_content」組合也導致使用非滾動ScrollView。
我在做什麼錯?
解決方案2(更不用說最好)
我可以強制(殘酷)視圖的概念變成一個ListView,它不滾動不錯,但我無法得到的列表中顯示裏面的我的意見自定義視圖。調試,我注意到onDraw永遠不會被調用。我是否需要在其他地方實現視圖的繪圖,以便在ListView中繪製它?
您可以發佈com.myPackage.MyView的代碼嗎? – 2012-08-17 10:47:05
用com.myPackage.MyView的代碼編輯 – 2012-08-17 11:02:36
你真的想要滾動什麼內容?我認爲它不滾動的原因是,當你在畫布上繪製一個Rect時,視圖不會調整大小,它只是顯示它適合視圖的那部分。 – 2012-08-17 11:19:11