2010-08-24 57 views
6

Tôi có một ứng dụng có 4 tab. Theo mặc định, mỗi chiều rộng của tab là 1/4 chiều rộng màn hình. Làm thế nào tôi có thể ghi đè lên điều này?Các tab có kích thước khác nhau trong Android

Tôi cần các tab có chiều rộng khác nhau cho mỗi tab. Bất kỳ ý tưởng về cách thực hiện điều đó?

+0

tôi đang cũng đang tìm kiếm giống nhau, thanh toán này: http://stackoverflow.com/questions/3446722/android-tabhost-problem-setindicator –

+0

Trông thú vị Paresh. Bạn đã thử bất kỳ giải pháp được đề xuất nào (Style hoặc ghi đè TabHost)? Ngay bây giờ tôi đang xem xét vấn đề này và suy nghĩ cách tiếp cận tốt nhất/nhanh nhất là tạo các tab của riêng chúng ta (với các nút và người nghe). – momo

Trả lời

0

Hãy thử điều này:

<TabWidget android:layout_width="wrap_content" ... /> 
+0

Hi radek-k, tôi đã sử dụng "wrap_content" và không có sự khác biệt nếu tôi thay đổi nó. Có lẽ là do tôi đang sử dụng chỉ mục Xem dưới dạng Tab, không chỉ văn bản. Thanks anyway – momo

1

Cuối cùng tôi quản lý để có một tab có kích thước khác nhau sử dụng ToggleButton.

XML của tôi là như thế này

<LinearLayout 
    android:id="@+id/tabs" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:layout_below="@id/header" 
> 

    <ToggleButton 
    android:id="@+id/tab1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:drawableRight="@drawable/icon_home" 
    android:textOn="" 
    android:textOff="" 
    android:background="@drawable/tabselector" 
    android:paddingLeft="15dip" 
    android:paddingRight="15dip" 
    android:layout_weight="0" 
    /> 
     <ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/top_menubar_separator" /> 

<ToggleButton 
    android:id="@+id/tab2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:drawableRight="@drawable/icon_store" 
    android:textOn="Store" 
    android:textOff="Store" 
    android:background="@drawable/tabselector" 
    android:paddingLeft="15dip" 
    android:paddingRight="15dip" 
    android:layout_weight="2" 
    /> 

đâu mỗi ToggleButton là một tab. Bí quyết ở đây là sử dụng trọng lượng để mở rộng các tab để hoàn toàn lấp đầy màn hình.

Các teab_selector.xml trông như thế này

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/top_menubar_selected" 
      android:state_pressed="true" 
      /> 
<item android:drawable="@drawable/top_menubar_selected" 
      android:state_checked="true" 
      /> 
     <item  android:drawable="@drawable/top_menubar_1px" /> 
</selector> 

tôi vẫn cần phải mã logic cho un-bấm một nút khi một cái mới được chọn và khởi động một ý định với ta hoạt động, nhưng có vẻ tốt đẹp cho đến nay .

2

Hãy thử điều này:

tabHost.getTabWidget().getChildAt(0).getLayoutParams().height = 35; 
+0

Điều này chắc chắn thay đổi chiều cao của tab nhưng văn bản của bạn sẽ bị mất ... xin vui lòng cho tôi knw nếu u có giải pháp cho vấn đề này. –

+0

Văn bản của bạn sẽ chỉ bị thiếu nếu kích thước văn bản và chiều cao của tab không theo tỷ lệ. Hãy thử giảm kích thước văn bản tab hoặc tăng chiều cao của tab để văn bản được nhìn thấy. – Zeba

+0

hoạt động như một sự quyến rũ – sivi

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