2013-03-27 48 views
5

Tôi đã thêm bố cục tuyến tính trong chế độ xem cuộn ngang và trong bố cục thêm một số chế độ xem văn bản. Có thể để có được trẻ em có thể nhìn thấy trong bố trí này.HorizontalScrollView có thể nhìn thấy trẻ em

Mã này có được tất cả con nhưng tôi muốn có được nhìn thấy (hiện đang hiển thị) con chỉ:

final HorizontalScrollView scroll = (HorizontalScrollView)findViewById(R.id.horizontalScrollView1); 
    LinearLayout linearLayout = ((LinearLayout)scroll.findViewById(R.id.linearLayout1)); 
    int chilrenNum = linearLayout.getChildCount(); 
+0

bạn có nghĩa là 'con có thể nhìn thấy được thiết lậpVisibilty (View.VISIBLE) '? hoặc bạn có nghĩa là 'có thể nhìn thấy trong tầm nhìn'? –

+0

Tôi có nghĩa là hiển thị là cảnh. – user2106897

Trả lời

3

Vâng, sau một chút tìm kiếm trên SO Tôi tìm thấy câu trả lời này để nghe di chuyển các sự kiện. Implement Scroll Event Listener in Android. Ý tưởng là ghi đè onScrollChanged trong số ScrollView của bạn và theo dõi phần hiển thị của chế độ xem cuộn trong hoạt động của bạn.

Làm mà bạn có thể dễ dàng nhận được các quan điểm có thể nhìn thấy bằng một mã mà trông như thế này:

int currentPosition = lastXPosition; // lastXPosition gets updated from scroll event 
int layoutWidth = linearLayout.getWidth(); 
Display display = getWindowManager().getDefaultDisplay(); 
Point size = new Point(); 
display.getSize(size); 
int width = size.x; 
int childWidth = layoutWidth/linearLayout.getChildCount(); 
int firstVisibleXPos = currentPosition - width/2; // currentPosition will be in the middle of the screen 
int lastVisibleXPos = currentPosition + width/2; 

int indexOfFirstVisible = firstVisibleXPos/childWidth; 
int indexOfLastVisible = lastVisibleXPos/ childWidth; 

Tất cả các mã trên giả định kích thước xem con cố định. nếu bạn đang sử dụng kích thước con biến, bạn sẽ cần phải có được chiều rộng của họ đầu tiên và theo dõi của nó sau đó tính toán visiblity dựa trên chỉ số và vị trí trong chế độ xem cha mẹ.

+0

Nhận lỗi trong dòng này: display.getSize (size); – user2106897

+0

Tôi đã sử dụng nhập android.view.Display; – user2106897

+0

thử int width = display.getWidth(); thay vào đó có vẻ như bạn đang xây dựng chống lại mức 2.x –

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