2010-05-09 45 views
7

Tôi đã cuộn chế độ xem tùy chỉnh của riêng mình và có thể vẽ lên màn hình, nhưng điều tôi thực sự muốn làm là đặt giá trị đoHigh của màn hình thành 1000px và để người dùng cuộn trên trục Y, nhưng tôi đang gặp sự cố khi thực hiện việc này. Có ai giúp được không?Android: tạo chế độ xem tùy chỉnh có thể cuộn

Dưới đây là một số mã:

public class TestScreen extends Activity { 
    CustomDrawableView mCustomDrawableView; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState);  
     mCustomDrawableView = new CustomDrawableView(this); 
     setContentView(mCustomDrawableView); 
    } 
} 

public class CustomDrawableView extends View { 

    public CustomDrawableView(Context context) { 
     super(context); 
     setVerticalScrollBarEnabled(true); 
     setMinimumHeight(1000); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     canvas.drawLine(...); 
     // more drawing 
    } 
} 

Tôi đã cố gắng để ghi đè scrollTo, scrollBy, awakenScrollBars vv với một cuộc gọi đến siêu nhưng vô ích. Tôi có bỏ lỡ điều gì đó ngớ ngẩn, hay tôi đang mắc phải một số sai lầm cơ bản?

Cảm ơn bạn trước,

Martyn

Addition:

tôi đã cố gắng để thêm video này như một thành phần tùy chỉnh với các tập tin bố trí bên dưới và thay đổi mã trong TestScreen để trỏ tại đúng tài nguyên với setContentView(R.layout.exampleLayout), nhưng điều này làm cho trình giả lập gặp sự cố. Tôi đã cố gắng bình luận mã xuống mức tối thiểu và nó vẫn bị treo, vì vậy có điều gì đó về cơ bản là sai lầm mà tôi đang làm nhưng tôi không chắc đó là gì:

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 
     <ScrollView android:layout_width="fill_parent" android:layout_height="fill_parent"> 
      <com.martyn.testApp.CustomDrawableView 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
      /> 
     </ScrollView> 
</LinearLayout> 

Trả lời

15

Chỉ cần đặt chế độ xem của bạn trong ScrollView!

Lưu ý rằng ScrollWiew nên là nút gốc (ở đây đó là LinearLayout của bạn)

+0

Đây là phương pháp tôi đã thực hiện cuối cùng. Tôi có LinearLayout làm nút cơ sở trong bố cục xml, sau đó là Scrollview với chế độ xem tùy chỉnh của tôi chứa trong – Martyn

+1

@Moons Tôi có Bố cục Tuyến tính trong chế độ xem cuộn của mình nhưng khi tôi thêm chế độ xem hình ảnh, nó xuất hiện trong cuộn nhưng khi tôi thêm xem tùy chỉnh của tôi vào nó, nó không .. nhưng nó cho thấy khi tôi thiết lập xem của tôi như là xem nội dung hoạt động của tôi nó chỉ hiển thị xem của tôi ... để hoạt động ... thì tại sao nó không hoạt động một chế độ xem cuộn? – rahul

6

Nếu bạn đang muốn toàn bộ hoạt động để trở thành một scrollview, sau đó làm một cái gì đó như thế này:

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/android:list" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 

    <LinearLayout android:id="@+id/scrollBody" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 

    <TextView android:id="@+id/textView1" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="@string/string1" /> 

    <TextView android:id="@+id/textView1" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="@string/string2" /> 

    </LinearLayout> 

</ScrollView> 

Sau đó, hoạt động sử dụng bố cục này có thể trông giống như sau:

public class ScrollingActivity extends Activity 
{ 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

     this.setContentView(R.layout.scroll_layout); 
    } 
} 

Giả định rằng tên tệp xml của bạn là scroll_layout.xml.

2

Nếu bạn muốn tự cuộn, bạn có thể sử dụng ScrollerVelocityTracker khi ghi đè phương thức onTouchEvent của chế độ xem tùy chỉnh của mình. Để giúp bạn thực hiện nó, tôi khuyên bạn nên xem qua Javadocs của các lớp này và xem xét triển khai các tiện ích con android di chuyển như NumberPicker.

Các vấn đề liên quan