7

Tôi mới sử dụng Android và trong dự án của mình Tôi có yêu cầuCách đặt tab đã chọn phải nằm ở giữa

nghĩa là tôi có sáu tab trên màn hình và phần còn lại của tab. Ở đây mục tab được chọn phải ở giữa, đầu tiên khi tôi nhập vào màn hình tôi hiển thị mục ở giữa đang hoạt động (tức là đã chọn).

Tốt nhưng làm cách nào tôi có thể đặt mục ở giữa này làm giữa khi tôi cuộn cho các tab còn lại?

ai cũng có thể đưa ra đề xuất để nhận giải pháp.

+0

có bạn nhìn vào cách sử dụng một người biết lắng nghe sẽ phát hiện di chuyển và hơn bạn tự đặt selectedTab trong phương pháp gọi lại? – hovanessyan

+0

Cảm ơn gợi ý của bạn, nhưng tôi đã không làm việc cho người nghe di chuyển sau (i tuyên bố Horizaontalscrollview trong xml) TestHorizontalScrollView sView = (TestHorizontalScrollView) findViewById (R.id.horizontalScrollView); public class TestHorizontalScrollView kéo dài HorizontalScrollView { \t TestHorizontalScrollView công cộng (Context ngữ cảnh) { \t siêu (ngữ cảnh); \t} \t @ Override \t khoảng trống bảo vệ onScrollChanged (int l, int t, int oldl, int oldt) { \t \t \t super.onScrollChanged (l, t, oldl, oldt); \t} \t} – Gopi

+0

http://stackoverflow.com/q/8181828/1007273 hãy xem tại đây, tôi nghĩ bạn sẽ tìm thấy các ý tưởng hữu ích. – hovanessyan

Trả lời

0

Tôi không nghĩ rằng tabhost có hành vi như vậy. Như tôi biết, tabhost có thể hoạt động mà không cần bộ điều khiển tab. Đối với trường hợp của bạn, một thư viện sẽ thay thế trình điều khiển tab, như bạn đã biết, mục được chọn trong thư viện luôn ở giữa. Sau đó, trong trình xử lý sự kiện của thư viện, hãy viết một số mã để kiểm soát tab nào sẽ hiển thị trong tabhost.

7

Kiểm tra this ra :)

public void centerTabItem(int position) { 
    tabHost.setCurrentTab(position); 
    final TabWidget tabWidget = tabHost.getTabWidget(); 
    final int screenWidth = getWindowManager().getDefaultDisplay().getWidth(); 
    final int leftX = tabWidget.getChildAt(position).getLeft(); 
    int newX = 0; 

    newX = leftX + (tabWidget.getChildAt(position).getWidth()/2) - (screenWidth/2); 
    if (newX < 0) { 
     newX = 0; 
    } 
    horizontalScrollView.scrollTo(newX, 0); 
} 
+0

hoạt động rất tốt. nhưng làm thế nào để tôi có được điều này xảy ra lần đầu tiên khi tabhost được thiết lập và khởi tạo. cho phép nói rằng tôi muốn initailioze máy chủ tab với chỉ mục hiện tại là 5 – Sunny

+0

Sau khi thiết lập, bạn có thể gọi trực tiếp centerTabItem (5) –

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