2014-11-03 15 views
7

Tôi có chủ đề tùy chỉnh trong dự án Android/Xamarin. Những gì tôi không thể làm là:Chủ đề tùy chỉnh trong dự án Android/Xamarin - văn bản Tiêu đề trung tâm của Thanh tác vụ

  • bộ tiêu đề để giữa (và loại bỏ biểu tượng) nút menu
  • add với tùy chọn trình đơn (ví dụ thiết lập nút)

Tôi đã thử với cài đặt thuộc tính -> trọng lực đến trung tâm nhưng nó không hoạt động.

Preview

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <!-- the theme applied to the application or activity --> 
    <style name="AgrippaTheme" 
     parent="@android:style/Theme.Holo.Light.DarkActionBar"> 
    <item name="android:actionBarStyle">@style/MyActionBar</item> 
    </style> 

    <!-- ActionBar styles --> 
    <style name="MyActionBar" 
     parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse"> 
    <item name="android:background">@color/main_orange_color</item> 
    <item name="android:titleTextStyle">@style/AgrippaTheme.TitleTextStyle</item> 
    </style> 

    <!-- ActionBar TitleTextStyle styles --> 
    <style name="AgrippaTheme.TitleTextStyle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title"> 
    <item name="android:textColor">@color/main_black_color</item> 
    <item name="android:gravity">center_vertical|center_horizontal</item> 
    </style> 
</resources> 

Trả lời

10

Bạn sẽ phải làm điều đó lập trình thông qua một phương pháp tĩnh bên trong một lớp tĩnh

public static void SetActionbarText(Activity activity, string text) 
     { 
      // Setting custom view enable 
      activity.ActionBar.SetHomeButtonEnabled(false); 
      activity.ActionBar.SetIcon(Android.Resource.Color.Transparent); 
      activity.ActionBar.SetDisplayShowCustomEnabled(true); 
      activity.ActionBar.Title = ""; 

      LinearLayout linearLayout = new LinearLayout(activity); 
      linearLayout.SetGravity(GravityFlags.CenterVertical); 
      LinearLayout.LayoutParams textViewParameters = 
       new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MatchParent, LinearLayout.LayoutParams.MatchParent); 
      textViewParameters.RightMargin = (int)(40 * activity.Resources.DisplayMetrics.Density); 
      TextView modelTitle = new TextView(activity);   
      modelTitle.Text = text; 
      modelTitle.Gravity = GravityFlags.Center; 
      linearLayout.AddView(modelTitle,textViewParameters); 
      ActionBar.LayoutParams actionbarParams = 
       new ActionBar.LayoutParams(ActionBar.LayoutParams.MatchParent,ActionBar.LayoutParams.MatchParent); 
      activity.ActionBar.SetCustomView(linearLayout, actionbarParams); 
     } 

Chú ý rằng bạn phải chơi với kích thước lề phải của văn bản. Lề này phải bằng với chiều rộng của biểu tượng trang chủ (nó ở đó nhưng nó là vô hình).

Bạn có thể thêm biểu tượng bên phải thêm biểu tượng đó vào một Menu.xml và tăng tệp xml này trong phương thức OnCreateOptionsMenu của hoạt động của bạn.

3

Bạn cũng có thể làm điều đó bằng cách sử dụng trình đơn và kiểu tệp xml. Để thêm nút cài đặt, ví dụ, bạn chỉ có thể thêm một mục trong tệp trình đơn xác định menu của giao diện người dùng được hiển thị trong hình ảnh. Có một vài biểu tượng được xác định trước, giống như biểu tượng tôi đã sử dụng (ic_menu_preferences), nhưng bạn có thể sử dụng một biểu tượng khác hoặc sử dụng hình ảnh thay thế. Vì vậy, trong, ta hãy nói agrippa_menu.xml:

<?xml version="1.0" encoding="utf-8"?> 

[...]

<item 
    android:id="@+id/menu_item_settings" 
    android:title="@string/settings" 
    android:icon="@android:drawable/ic_menu_preferences" 
    android:showAsAction="ifRoom|withText" 
    app:showAsAction="ifRoom|withText"/> 

[...]

Để đi xe tắt biểu tượng, bạn có thể thêm dòng này vào kiểu định nghĩa giao diện người dùng này hoặc tạo một giao diện người dùng mới nếu bạn chưa tạo nó. Vì vậy, trong styles.xml:

<style name="AgrippaTheme" parent="android:Theme.Holo.Light"> 

    <!--pre v11--> 
    <item name="logo">@color/transparent</item> 
    <!--post v11--> 
    <item name="android:logo">@color/transparent</item> 
    <!-- Customize your theme here. --> 
</style> 

Cuối cùng, trong tài liệu tham khảo để đặt tiêu đề ở giữa, tôi đã không tìm thấy một cách khác hơn so với việc xác định một hành động tùy chỉnh thanh xml và đặt nó programatically như người ta nói ở đây: Center Align title in action bar using styles in android.:. Nếu ai đó biết làm thế nào để làm điều đó bằng cách sử dụng chỉ là phong cách sẽ được hoan nghênh.

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