自定义操作栏删除左右空格问题

时间:2017-10-20 06:29:08

标签: android android-actionbar

我有自定义操作栏但它左右两侧有一些余量。我不想要左边或右边的边距。我尝试了一些解决方案,但没有进展。我怎么能删除它们?提前致谢

custom_actionbar.xml:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/yazi"
android:orientation="horizontal">

<TableRow>

    <ImageButton
        android:id="@+id/imgSideBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_gravity="center_vertical"
        android:scaleType="centerCrop"
        android:background="@mipmap/menu_open" />


    <TextView
        android:id="@+id/txtBaslik"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="center_vertical"
        android:padding="10dp"
        android:text="Some text"
        android:textAlignment="center"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="@color/white"
        android:textSize="18sp" />

    <TextView
        android:id="@+id/txtAsamaSayisi"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:gravity="center_vertical"
        android:padding="10dp"
        android:text="1/24"
        android:textAlignment="viewEnd"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textSize="@dimen/_9sdp"
        android:textStyle="bold"
        android:visibility="invisible" />

    <ImageButton
        android:id="@+id/imgArrows"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_gravity="center_vertical"
        android:background="@android:color/transparent"
        android:src="@mipmap/left_right_arrows"
        android:visibility="invisible" />

</TableRow>

</TableLayout>

我的java课程:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_menu);

    //Setting custom actionbar
    getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
    getSupportActionBar().setDisplayShowCustomEnabled(true);
    getSupportActionBar().setCustomView(R.layout.custom_actionbar);

    //Some codes...
}

我的结果截图。正如您所看到的,左右两边都有一些边距。

Screenshot

编辑:我的主要xml代码:

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:gravity="center"
tools:context="com.cybersoft.intvrg.BeyannameDoldur">


<FrameLayout
    android:id="@+id/main_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentTop="true">
</FrameLayout>

</RelativeLayout>

我的styles.xml代码:

<style name="CustomTheme" parent="Theme.AppCompat.Light">
    <!--<item name="contentInsetStart">0dp</item>-->
    <!--<item name="contentInsetEnd">0dp</item>-->
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:homeAsUpIndicator">@null</item>
</style>

3 个答案:

答案 0 :(得分:1)

看起来你在java代码中的某个地方定义了一个边距,我无法看到它应该显示的任何其他方式。也许您可以自己找到它,或者您可以向我们展示您定义操作栏的Java代码。

此外,documentation表示TableRow会强制其子项始终分别对MATCH_PARENTWRAP_CONTENT使用layout_widthlayout_height。如果没有正确指定,这可能会导致一些问题。

最好的问候。

答案 1 :(得分:1)

  

视图请求的高度或宽度的特殊值。   MATCH_PARENT意味着视图要与其父视图一样大,   减去父级的填充,如果有的话

getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
getSupportActionBar().setDisplayShowCustomEnabled(true);

View viewOBJ = getLayoutInflater().inflate(R.layout.custom_actionbar,null);
LayoutParams layoutParams = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);

getSupportActionBar().setCustomView(viewOBJ, layoutParams);

答案 2 :(得分:0)

这是因为ActionBar为“Home”按钮和其他一些按钮保留了一些空间。

要删除它们,您必须在根操作栏布局中添加此属性:

<android.support.v7.widget.Toolbar
        android:id="@+id/toolbarFromActivityB"
        app:contentInsetLeft="0dp"
        app:contentInsetStart="0dp"
        app:contentInsetRight="0dp"
        app:contentInsetEnd="0dp">
    <TableLayout 
        ...
        >
    />

正如您所看到的那样,您可以将操作栏中的布局放在android.support.v7.widget.Toolbar中。稍后您将不得不使用setSupportActionBar(工具栏)将其扩展为工具栏之前的XML视图(toolbarFromActivityB)。

由于您的工具栏位于其他文件中,因此您必须将其包含在您的活动xml(<include layout="@layout/custom_actionbar" />

不要获取现有的“操作栏”并夸大自定义视图。而不是为您的新活动设置新的工具栏。