【问题标题】:ActionBar`s title text paddingActionBar 的标题文本填充
【发布时间】:2014-11-13 17:47:06
【问题描述】:

如何在不制作自定义 ActionBar 的情况下设置标题文本填充?

以下是关于 ActionBar 在 xml 中的徽标填充的好答案: Padding between ActionBar's home icon and title

所以我想为标题做这样的事情。

这是我的 styles.xml 代码:

<style name="AppTheme" parent="AppBaseTheme">
    <item name="android:background">@android:color/transparent</item>
    <item name="android:actionBarSize">80dp</item>
    <item name="android:actionBarStyle">@style/MyActionBar</item>
    <item name="android:windowContentOverlay">@null</item>
</style>

<style name="MyActionBar" parent="android:Widget.Holo.ActionBar" >
    <item name="android:logo">@drawable/action_bar_logo_padding</item>
    <item name="android:background">@drawable/action_bar</item>
    <item name="android:titleTextStyle">@style/MyActionBarTitleText</item>
</style>

<style name="MyActionBarTitleText"
       parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
    <item name="android:textColor">@color/green</item>
    <item name="android:paddingTop">25dp</item>
    <item name="android:textSize">30sp</item>
</style>

android:paddingTop 不工作(同样适用于 android:top 和 android:topOffset)

【问题讨论】:

  • 您是否尝试过 layout_marginTop,如果没有尝试在操作栏上使用 paddingTop 而不是文本样式?
  • 操作栏上的 paddingTop 和 layout_marginTop 只是将整个操作栏及其所有元素(包括边框)向下移动到活动中。文本样式中的 layout_marginTop 也不起作用。

标签: android


【解决方案1】:

您的问题不会使用 Styles 这么容易解决...最好的解决方案是为您的 actionBar 创建一个 CustomView 并使用它! 有时,actionbar(title) 中的样式填充在某些设备上不起作用。

示例:-> http://javatechig.com/android/actionbar-with-custom-view-example-in-android

祝你好运!

【讨论】:

    【解决方案2】:

    我不想创建自定义 actionBar 的原因是我的应用程序中的 actionBar 仅包含徽标和标题等基本内容。另外,我已经找到了如何控制徽标。 但最终,正如 Souto 所建议的,我创建了自己的自定义视图:

    java代码(带有静态方法的公共类):

    import android.app.ActionBar;
    import android.app.Activity;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.widget.TextView;
    
    public class MyActionBar {
        static void CreateActionBar(ActionBar ab, Activity ac, String str) {
            ab.setDisplayShowHomeEnabled(false);
            ab.setDisplayShowTitleEnabled(false);
            LayoutInflater mInflater = LayoutInflater.from(ac);
    
            View mCustomView = mInflater.inflate(R.layout.action_bar, null);
            TextView mTitleTextView = (TextView) mCustomView.findViewById(R.id.title_text);
            mTitleTextView.setText(str);
    
            ab.setCustomView(mCustomView);
            ab.setBackgroundDrawable(ac.getResources().getDrawable(R.drawable.action_bar));
            ab.setDisplayShowCustomEnabled(true);
        }
    }
    

    action_bar.xml 相对布局:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:background="@android:color/transparent" >
    
    <ImageView
        android:id="@+id/image"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="8dp"
        android:layout_marginLeft="8dp"
        android:src="@drawable/logo" />
    
    <TextView
        android:id="@+id/title_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/image"
        android:layout_marginLeft="10dp"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="9dp"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="@color/green"
        android:textStyle="normal"
        android:fontFamily="sans-serif-light"
        android:textSize="34sp" />
    </RelativeLayout>
    

    styles.xml:

    <style name="AppTheme" parent="AppBaseTheme">
            <item name="android:background">@android:color/transparent</item>
            <item name="android:actionBarSize">80dp</item>
            <item name="android:actionBarStyle">@style/MyActionBar</item>
            <item name="android:windowContentOverlay">@null</item>
        </style>
    
        <style name="MyActionBar" parent="android:Widget.Holo.ActionBar" > 
            <item name="android:displayOptions"></item>
            <item name="android:background">@drawable/action_bar</item>
        </style>
    

    在每个活动中:

    public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        ActionBar mActionBar = getActionBar();
        MyActionBar.CreateActionBar(mActionBar, this, "My title");
    
        ......................................
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-19
      • 2018-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多