操作栏标志左侧填充

7
ActionBar在标志的左侧显示一个空间。 我认为这个空间是为向上指示器保留的。
我想给这个空间一个明确定义的距离,例如20dp。
我该如何做到这一点?
我可以将图标的填充设置为0,但这并没有删除标志和屏幕左侧之间的空间。
我尝试通过使用自定义布局来解决它。 但有一个小问题。 每次启动活动时,首先出现正常的ActionBar,然后显示自定义布局。
以下是我如何显示自定义视图的方法:
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_custom);
        // Set up the action bar.
        final ActionBar actionBar = getActionBar();
        //set custom actionbar
        actionBar.setDisplayShowCustomEnabled(true);
        actionBar.setCustomView(R.layout.actionbar);
        //Displays the custom design in the actionbar
        actionBar.setDisplayUseLogoEnabled(false);
        actionBar.setDisplayHomeAsUpEnabled(false);
        actionBar.setDisplayShowHomeEnabled(false);
        actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
    }

这是我的styles.xml文件内容:

        <!--Customize the actionbar-->
        <item name="android:windowActionBarOverlay">false</item>
        <item name="android:actionBarStyle">@style/MyActionBar</item>
        <item name="android:actionButtonStyle">@style/MyActionButton</item>

    </style>

    <style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
        <item name="android:background">@color/green2</item>
        <item name="android:icon">@drawable/app_icon_small</item>
        <!-- Support library compatibility -->

    </style>

    <style name="MyActionButton" parent="@android:style/Widget.Holo.Light.ActionButton">
        <item name="android:paddingRight">@dimen/padding_border</item>
        <item name="android:paddingLeft">@dimen/padding_border</item>
        <item name="android:src">@drawable/icon_plus</item>
        <!--<item name="android:minWidth">0dp</item>-->
        <!--<item name="android:paddingLeft">0dp</item>-->
        <!--<item name="android:paddingRight">15dp</item>-->
        <!-- Support library compatibility -->
    </style>

这是自定义视图的布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:gravity="center_vertical"
    android:background="@color/green2">
    <ImageView
        android:id="@+id/header"
        android:contentDescription="@string/app_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="@dimen/padding_border"
        android:paddingRight="@dimen/padding_border"
        android:src="@drawable/app_icon_small"/>

    <EditText
        android:id="@+id/et_actionbar_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="YOLO"
        android:gravity ="center"
        android:textColor="@android:color/black"
        android:textStyle="bold"
        android:background="@android:color/transparent"
        />
</LinearLayout>

1
展示一些你的代码。 - ElmoVanKielmo
@sureshkumar 你是如何做到的? - BertLeonaers
@ElmoVanKielmo,我已经在我的问题中添加了一些信息。 - BertLeonaers
使用以下代码:ActionBar actionBar = getSupportActionBar(); actionBar.setShowHomeAsUpEnabled(false); - suresh kumar
@sureshkumar 这个也不起作用。小箭头消失了,但我的标志并没有移动到左边,就是一个无法改变的自由空间。 - BertLeonaers
显示剩余3条评论
2个回答

12

您可以在文件夹/res/drawable中创建XML文件(your_xml_file),方法如下:

<?xml version="1.0" encoding="UTF-8"?>
<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:drawable="@drawable/menu_button"
        android:right="20dp"/>


</layer-list>

并将其添加到代码中:

<activity android:name=...
            android:logo="@drawable/your_xml_file" >

这只是在图标的右侧添加填充。我想将图标的实际viewHolder向左移动,并在屏幕左侧和图标之间设置自定义填充。 - BertLeonaers

0
为了减少屏幕左侧和标志之间的空间,我使用了以下代码:
       <style name="AppTheme" parent="android:Theme.Holo">
            <item name="android:actionBarStyle">@style/ActionBarStyle</item>
        </style>

        <style name="ActionBarStyle" parent="@android:style/Widget.Holo.ActionBar">
            <item name="android:layout_marginLeft">-11dp</item>
        </style>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接