2015-02-09 93 views
6

Tôi đang làm việc với thư viện 'AppCompact' và gặp một số vấn đề với bố cục/định vị. Tôi muốn định vị biểu tượng Ứng dụng ở bên phải của 'ActionBar'. Một phương pháp là xác định một nút trên thanh công cụ, nhưng có phương pháp chuẩn nào để đặt biểu tượng Ứng dụng và nút Lên trên ở bên phải của ActionBar không?đặt biểu tượng ứng dụng ở bên phải trong thanh công cụ hoạt động

enter image description here

Như bạn có thể nhìn thấy trong hình trên, các biểu tượng được đặt ở bên trái, tôi muốn nó được ở bên phải. Bất kỳ trợ giúp sẽ được đánh giá cao.

Ps: Đối với những người có thể gặp phải vấn đề của tôi nó có thể được cố định một cách dễ dàng sử dụng mã này Thêm mã này để bày tỏ:

<application android:supportsRtl="true"> 

và sau đó viết mã này vào onCreate:

getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL); 
+0

@ShabbirDhangot vì vậy có vẻ như cách dễ nhất là xác định một mục có giá trị trong thanh công cụ? có cách nào để ẩn biểu tượng ứng dụng không hay đặt bố cục thanh công cụ sang phải? –

+0

Tôi đề nghị bạn nên tạo tiêu đề với bố cục và điều chỉnh chế độ xem của bạn. ẩn thanh tác vụ hiện tại. cũng Nếu bạn không đi theo cách đó bạn có thể ẩn biểu tượng thanh hành động bằng cách sử dụng phong cách. được mô tả ở đây http://stackoverflow.com/questions/14606294/remove-icon-logo-from-action-bar-on-android –

+0

tuyệt vời, nó làm việc cho tôi. –

Trả lời

13

Không có cách nào android cung cấp để đặt biểu tượng ứng dụng ở bên phải của thanh tác vụ nhưng bạn vẫn có thể làm điều đó.

Tạo một menu, nói main_menu.xml

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 

    <item android:id="@+id/menu_item" 
     android:icon="@drawable/your_app_icon" 
     android:title="@string/menu_item" 
     app:showAsAction="always"/> //set showAsAction always 
            //and this should be the only menu item with show as action always 

</menu> 

Bây giờ chỉ cần overrideonCreateOptionsMenu trong lớp hoạt động của bạn.

thêm này trong MainActivity.java

@Override 
public boolean onCreateOptionsMenu(Menu menu){ 

    getMenuInflater().inflate(R.menu.main_menu, menu); 
    return super.onCreateOptionsMenu(menu); 
} 

Thế là xong! Biểu tượng ứng dụng của bạn sẽ hiển thị ở bên phải ActionBar ngay bây giờ.

Nếu bạn có nhiều hơn một mục trong menu sau đó overrideonPrepareOptionsMenu trong lớp hoạt động và thiết lập setEnabled(false) cho mục menu có biểu tượng ứng dụng, làm điều này ngăn cản biểu tượng của bạn để có thể nhấp.

@Override 
public boolean onPrepareOptionsMenu(Menu menu){ 
    menu.findItem(R.id.menu_item).setEnabled(false); 

    return super.onPrepareOptionsMenu(menu); 
} 

Bây giờ tập tin MainActivity.java của bạn sẽ trông như thế

@Override 
public boolean onCreateOptionsMenu(Menu menu){ 

    getMenuInflater().inflate(R.menu.main_menu, menu); 
    return super.onCreateOptionsMenu(menu); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item){ 

    switch(item.getItemId()){ 
     case R.id.menu_item: //this item has your app icon 
      return true; 

     case R.id.menu_item2: //other menu items if you have any 
      //add any action here 
      return true; 

     case ... //do for all other menu items 

     default: return super.onOptionsItemSelected(item); 
    } 
} 

@Override 
public boolean onPrepareOptionsMenu(Menu menu){ 
    menu.findItem(R.id.menu_item).setEnabled(false); 

    return super.onPrepareOptionsMenu(menu); 
} 

Đây là lừa chỉ bạn có thể sử dụng để thiết lập biểu tượng ứng dụng trên bên phải.

+0

cảm ơn bạn đã giúp đỡ của bạn .. Tôi đã tìm thấy một phương pháp và tôi cập nhật queston của tôi .. Bạn có nghĩ rằng phương pháp mà tôi sử dụng là sai?cảm ơn bạn –

+0

@MajidHojati Thuộc tính 'supportsRtl' đã được thêm vào ở cấp api 17 nên nó sẽ không hoạt động cho api <17. Chỉ sử dụng nó nếu' minSdkVersion' của bạn là 17. Nguồn: http://developer.android.com/guide /topics/manifest/application-element.html#supportsrtl – Apurva

+0

cảm ơn sự giúp đỡ của bạn. bây giờ tôi tìm cách nó hoạt động –

1

Không có cách nào khác ngoài việc đặt bố cục thành RTL hoặc tự mình triển khai. Ngay cả khi bạn phân lớp Toolbar và cố gắng thay đổi onLayout, bạn sẽ cần phải tính toán lại vị trí của tất cả các chế độ xem.

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