2012-12-12 37 views
8

Tôi đang sử dụng Thanh tác vụ trong ứng dụng của mình.
Tôi muốn Chiều cao của ActionBar programatically vì thế tôi đang sử dụng:
Nhận chiều cao của ActionBar

ActionBar.getHeight(); 


Nhưng tôi nhận được 0 giá trị của Height. Vì vậy, Làm thế nào tôi có thể nhận được chiều cao của ActionBar?

Trả lời

14

Tôi đã tìm thấy giải pháp thay thế ActionBar.getHeight()
Nếu bất kỳ ai gặp phải vấn đề tương tự thì liên kết this hữu ích.

Trong khi câu trả lời @ Birdy là một lựa chọn nếu bạn muốn một cách rõ ràng kiểm soát kích thước ActionBar có một cách để kéo nó lên mà không cần khóa kích thước mà tôi tìm thấy trong tài liệu hỗ trợ. Đó là một chút khó xử nhưng nó làm việc cho tôi. Bạn sẽ cần một ngữ cảnh, ví dụ này sẽ hợp lệ trong một Hoạt động. ~ Anthony

// Calculate ActionBar's height 
TypedValue tv = new TypedValue(); 
if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) { 
    actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data,getResources().getDisplayMetrics()); 
} 
+0

"Android. R.attr.actionBarSize "không hoạt động trong phiên bản Android 2.3, nhưng" R.attr.actionBarSize "đang hoạt động trên mọi phiên bản Android. chỉ cần sử dụng "R.attr.actionBarSize" thay vì "android.R.attr.actionBarSize" và vv –

+0

Bất cứ ai cũng biết cách sử dụng nó trong java (javafx)? – Lealo

3

Một cách đơn giản để tìm actionbar chiều cao là từ phương pháp Hoạt động onPrepareOptionMenu.

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
      .... 
      int actionBarHeight = getActionBar().getHeight()); 
      ..... 
    } 
5

Mã dưới đây cũng sẽ trợ giúp. Bạn có thể cần phải thay đổi getContext() để này

final TypedArray styledAttributes = getContext().getTheme().obtainStyledAttributes(
        new int[] { android.R.attr.actionBarSize }); 
mActionBarSize = (int) styledAttributes.getDimension(0, 0); 
styledAttributes.recycle(); 

Câu trả lời được sao chép từ câu hỏi này What is the size of ActionBar in pixels?

Đối với phiên bản mới hơn của Android, bạn chỉ đơn giản có thể làm điều này:

getActionBar().getHeight() 
+0

đánh giá cao @Tim Hong. Tôi sẽ nhìn vào đó. – KDeogharkar

+0

Đối với phiên bản Android mới hơn, bạn chỉ cần thực hiện việc này: getActionBar(). GetHeight() –

+3

getHeight() có thể trả về 0 ngay cả khi isShowing là đúng (có thể là trong hoạt ảnh của nó). Bạn có thể cần phải sử dụng phương pháp thuộc tính trong một số trường hợp. –

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