Đệm thanh công cụ Android API 21


193

Làm cách nào để thoát khỏi phần đệm thêm trong Thanh công cụ mới với API SDK Android phiên bản 21 (thư viện hỗ trợ)?

Tôi đang nói về những mũi tên màu đỏ trên bức tranh này: nhập mô tả hình ảnh ở đây

Đây là mã tôi đang sử dụng:

<android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:background="?attr/colorPrimary"
        android:padding="0dp"
        android:layout_margin="0dp">

        <RelativeLayout
            android:id="@+id/action_bar_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_margin="0dp"
            android:padding="0dp"
            android:background="#000000">

            <Spinner
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>

        </RelativeLayout>
</Toolbar>

Như bạn có thể thấy tôi đã đặt tất cả các phần đệm có liên quan thành 0, nhưng vẫn có phần đệm xung quanh Spinner. Tôi đã làm gì sai hoặc tôi cần phải làm gì để thoát khỏi phần đệm thêm?

Chỉnh sửa Một số người đã đặt câu hỏi tại sao tôi đang cố gắng làm điều này.

Theo thông số kỹ thuật của Thiết kế Vật liệu, công cụ quay vòng phải là 72dp từ phía bên trái desc

Tôi cần phải vô hiệu hóa phần đệm mà Google đã đặt ở đó để đặt spinner đúng cách: desc

Chỉnh sửa 2

Theo câu trả lời của Chris Bane bên dưới, tôi đặt contentInsetStart thành 0. Đối với thư viện hỗ trợ, bạn sẽ cần sử dụng không gian tên ứng dụng:

<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

     <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:minHeight="@dimen/action_bar_height"
        android:background="?attr/colorPrimary"
        android:contentInsetStart="0dp"
        android:contentInsetLeft="0dp"
        app:contentInsetLeft="0dp"
        app:contentInsetStart="0dp"
        app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

</android.support.v4.widget.DrawerLayout>

Tôi hy vọng điều này sẽ giúp được ai đó, nó đã khiến tôi bối rối trong vài ngày.


4
Bạn cũng đã quản lý để loại bỏ các paddings trên / dưới? Tôi đã thử nhưng không có gì xảy ra ngay cả khi đặt tất cả các contentInsetXthuộc tính thành 0dp.
patrickjason91

tương tự như @ patrickjason91, có thể căn chỉnh ImageView với Thanh công cụ hàng đầu (hình ảnh có w, h: quấn_content) trong Thanh công cụ không? Tôi đã thử tất cả mọi thứ nhưng không thể thực hiện được .. Mục tiêu của tôi là có một cái gì đó giống như hình ảnh ruy băng đánh dấu "treo" trên đầu Thanh công cụ, đặt cược luôn có một số phần đệm mà tôi không thể loại bỏ nó
Ewoks

Câu trả lời:


280

Các hình nhỏ bên trái là do Thanh công cụ contentInsetStart , theo mặc định là 16dp.

Thay đổi này thành 72dp để căn chỉnh theo dòng chính.

Cập nhật thư viện hỗ trợ v24.0.0:

Để phù hợp với thông số Thiết kế Vật liệu, có một thuộc tính bổ sung contentInsetStartWithNavigationtheo mặc định là 16dp. Thay đổi điều này nếu bạn cũng có một biểu tượng điều hướng.


Cám ơn bạn rất nhiều về điều này. Có vẻ hơi lạ khi di chuyển khỏi đệm và lề mặc dù. Đây có phải là một điều Android 5?
James Cross

1
ContentInsetStart được sử dụng để chèn từ bất kỳ thanh công cụ nào được cung cấp UI (ví dụ: biểu tượng điều hướng).
Chris Banes

Và làm thế nào bạn sẽ căn chỉnh radiobutton với biểu tượng trên thanh công cụ? Tôi có vấn đề tương tự: stackoverflow.com/questions/26623042/
Kẻ

Ngoài ra còn có titleMarginStart attr cho phần đệm tiêu đề
lệch

2
cài đặt contentInsetStartWithNavigationthành 0 đã giúp tôi rất nhiều với support-v4: 25.0.1
Quentin G.

145

Câu trả lời trên là đúng nhưng vẫn có một điều có thể tạo ra vấn đề (Ít nhất nó đã tạo ra một vấn đề cho tôi)

Tôi đã sử dụng những điều sau đây và nó không hoạt động đúng trên các thiết bị cũ -

android:contentInsetStart="0dp"
android:contentInsetLeft="0dp"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"

Thủ thuật ở đây chỉ là sử dụng như sau -

app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"

và thoát khỏi -

android:contentInsetStart="0dp"
android:contentInsetLeft="0dp"

Và bây giờ nó sẽ hoạt động tốt trên tất cả các thiết bị.

Hy vọng nó giúp.


đây có thể là hành vi mặc định Cảm ơn =)
Luciano Rodríguez

2
Không hoạt động cho CollapsingToolBarLayout. Làm ơn giúp tôi .
Aslam Hossin

thêm android: padding = "0dp" đã giúp tôi
AITAALI_ABDERRAHMANE

1
cùng với 4 điều đã nêu ở trên, app:contentInsetStartWithNavigationcó thể giúp sửa chữa mọi thứ nếu chưa đủ
tính toán

10

Đơn giản thêm hai dòng này trong thanh công cụ. Sau đó, chúng tôi nhận được mới bcoz không gian bên trái mặc định nó 16dp.

android:contentInsetStart="0dp"
app:contentInsetStart="0dp"

9

Trong trường hợp người khác vấp ngã ở đây ... bạn cũng có thể đặt phần đệm :

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

int padding = 200 // padding left and right

toolbar.setPadding(padding, toolbar.getPaddingTop(), padding, toolbar.getPaddingBottom());

Hoặc nội dung :

toolbar.setContentInsetsAbsolute(toolbar.getContentInsetLeft(), 200);

không cần chuyển đổi phần đệm sang dp và tính đến mật độ hiển thị.
Ai đó ở đâu đó vào

3

Đây là những gì tôi đã làm và nó hoạt động hoàn hảo trên mọi phiên bản Android.

thanh công cụ

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="56dp"
    android:background="@color/primary_color"
    app:theme="@style/ThemeOverlay.AppCompat"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

    <TextView
        android:id="@+id/toolbar_title"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="16dp" <!-- Add margin -->
        android:layout_marginStart="16dp"
        android:gravity="left|center"
        android:text="Toolbar Title" <!-- Your title text -->
        android:textColor="@color/white" <!-- Matches default title styles -->
        android:textSize="20sp"
        android:fontFamily="sans-serif-medium"/>

</android.support.v7.widget.Toolbar>

MyActivity.java (Để ẩn tiêu đề thanh công cụ mặc định)

getSupportActionBar().setDisplayShowTitleEnabled(false); // Hide default toolbar title

Kết quả với Keylines được hiển thị

nhập mô tả hình ảnh ở đây


3

Tạo thanh công cụ của bạn như:

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/menuToolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="0dp"
android:background="@color/white"
android:contentInsetLeft="10dp"
android:contentInsetRight="10dp"
android:contentInsetStart="10dp"
android:minHeight="?attr/actionBarSize"
android:padding="0dp"
app:contentInsetLeft="10dp"
app:contentInsetRight="10dp"
app:contentInsetStart="10dp"></android.support.v7.widget.Toolbar>

Bạn cần phải thêm

nội dung

thuộc tính để thêm khoảng cách

vui lòng theo liên kết này để biết thêm - Mẹo Android


3

Một sự kết hợp của

android:padding="0dp" Trong xml cho Thanh công cụ

mToolbar.setContentInsetsAbsolute(0, 0) Trong mã

Điều này làm việc cho tôi.


1

cái này hoạt động với tôi trên điện thoại Android 7.11:

<!-- TOOLBAR -->
<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:contentInsetStartWithNavigation="0dp">

    <TextView
        style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
        android:id="@+id/toolbar_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/create_account_title"
        android:textColor="@color/color_dark_grey"/>

</android.support.v7.widget.Toolbar>

lưu ý: Tôi hoàn toàn không thành công với padding = 0 hoặc contentInsetLeft = 0 hoặc contentInsetStart = 0


0

Ok, nếu bạn cần 72dp, bạn không thể thêm sự khác biệt vào phần đệm trong tệp xml? Bằng cách này, bạn giữ Inset / Padding mặc định của Android mà họ muốn chúng tôi sử dụng.

Vậy: 72-16 = 56

Do đó: thêm phần đệm 56dp để đặt bản thân ở mức tổng thụt / lề là 72dp.

Hoặc bạn chỉ có thể thay đổi các giá trị trong tệp Dimen.xml. đó là những gì tôi đang làm Nó thay đổi mọi thứ, toàn bộ bố cục, bao gồm ToolBar khi được triển khai theo cách Android mới phù hợp.

Làm giảm tập tin tài nguyên

Liên kết tôi đã thêm hiển thị các giá trị Dimen ở mức 2dp vì tôi đã thay đổi nhưng nó được đặt mặc định ở mức 16dp. Chỉ cần ...


-2
((Toolbar)actionBar.getCustomView().getParent()).setContentInsetsAbsolute(0,0);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.