【问题标题】:Custom theme in Android / Xamarin project - center Title text of Action BarAndroid / Xamarin 项目中的自定义主题 - 操作栏的中心标题文本
【发布时间】:2014-12-30 06:45:19
【问题描述】:

我在 Android / Xamarin 项目中有自定义主题。我不能做的是:

  • 将标题设置在中间(并删除图标)
  • 添加带有菜单选项的菜单按钮(例如按钮设置)

我尝试过设置属性 -> 重力居中,但没有奏效。

    <?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>

【问题讨论】:

    标签: android xamarin


    【解决方案1】:

    您也可以使用菜单和样式 xml 文件来实现。例如,要添加设置按钮,您可以在菜单文件中添加一个项目,该项目定义了图片中显示的 UI 的菜单。有一些预定义的图标,比如我使用的那个(ic_menu_preferences),但您可以使用另一个图标或使用图像代替。所以,让我们说 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"/>
    

    [...]

    要摆脱图标,您可以将此行添加到定义此 UI 的样式中,或者如果您还没有创建它,请创建一个新的。所以,在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>
    

    最后,关于将标题放在中间,除了定义自定义 xml 操作栏并像这里所说的那样以编程方式设置它之外,我还没有找到其他方法:Center Align title in action bar using styles in android. : 。如果有人知道如何使用样式来做到这一点,将受到欢迎。

    【讨论】:

      【解决方案2】:

      您必须通过静态类中的静态方法以编程方式完成此操作

      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);
              }
      

      请注意,您必须使用文本的右边距尺寸。这个边距应该等于主页图标的宽度(它在那里但它是不可见的)。

      您可以添加正确的图标,将其添加到 Menu.xml 并在您的活动的 OnCreateOptionsMenu 方法中扩展此 xml 文件。

      【讨论】:

        猜你喜欢
        • 2021-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-23
        相关资源
        最近更新 更多