8

Tôi đã thực hiện rất nhiều câu trả lời ở đây có liên quan đến Thanh công cụ nhưng không có câu trả lời nào có thể giúp tôi.Thanh công cụ mở rộng với Chế độ xem tùy chỉnh không hiển thị với chiều rộng đầy đủ

Những gì tôi đang cố gắng đạt được là có một thanh công cụ mở rộng sẽ hiển thị biểu tượng, có thể là tên của Hoạt động/ứng dụng, nó sẽ có nút chuyển đổi/ngăn tác vụ ở bên phải sẽ hiển thị điều hướng- như ngăn kéo ở bên phải, một menu tràn với các tùy chọn khác như cài đặt và cũng là một tab điều hướng ở phía dưới cho phép người dùng di chuyển giữa các đoạn khác nhau (các ngày khác nhau trong một tháng).

Cách tôi đang cố gắng đạt được điều này là thông qua thanh công cụ. Đầu tiên tôi tạo thanh công cụ và thêm chế độ xem tùy chỉnh của mình.

<?xml version="1.0" encoding="utf-8"?> 
    <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_actionbar" 
     android:layout_width="match_parent" 
     android:layout_height="@dimen/min_double_toolbar_height" 
     app:theme="@style/ThemeOverlay.AppCompat.ActionBar" 
     android:minHeight="?attr/actionBarSize" 
     android:background="@color/primary" 

     app:contentInsetStart="0dp" 
     app:contentInsetEnd="0dp" 
     app:contentInsetLeft="0dp" 
     app:contentInsetRight="0dp" 
     android:clipToPadding="false" 
     > 
     <!-- ThemeOVerlay Makes sure the text and items are using solid colors--> 

     <include 
      android:layout_width="match_parent" 
      android:layout_height="72dp" 
      android:layout_gravity="bottom" 
      layout="@layout/day_navigation_tab" 
      /> 

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

day_navigation_tab chỉ là một ngang với Hai quan điểm hình ảnh với Padding của 72dp (như bằng cách hướng dẫn) và một cái nhìn văn bản với trọng lượng bố trí thiết lập để 1 để nó kéo dài cho toàn bộ không gian có sẵn. Và chiều cao 72dp.

Bây giờ trong XML BaseActivity tôi bao gồm các thanh công cụ trong Framelayout của bối cảnh chính (nếu không thanh công cụ sẽ bao gồm toàn bộ màn hình cho một lý do nào đó đối với tôi (mất tôi lứa tuổi để figre mà ra))

<...ommited> 

    <FrameLayout 
     android:id="@+id/container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
     <include 
      android:id="@+id/toolbar" 
      layout="@layout/app_bar" 
      /> 
    </FrameLayout> 

    <!-- android:layout_gravity="start" tells DrawerLayout to treat 
     this as a sliding drawer on the left side for left-to-right 
     languages and on the right side for right-to-left languages. 
     If you're not building against API 17 or higher, use 
     android:layout_gravity="left" instead. --> 
    <!-- The drawer is given a fixed width in dp and extends the full height of 
     the container. --> 
    <fragment android:id="@+id/navigation_drawer" 
       android:layout_width="@dimen/navigation_drawer_width" 
       android:layout_height="match_parent" 
       android:layout_gravity="right" 
       android:name="alterway.agency.timeentry.NavigationDrawerFragment" 
       tools:layout="@layout/fragment_navigation_drawer" 
       app:layout="@layout/fragment_navigation_drawer" 
    /> 


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

Tuy nhiên, khi tôi sử dụng thanh công cụ, tôi thổi phồng Menu trên actionBar trong onCreateOptionsMenu chế độ xem tùy chỉnh của tôi bị thu hẹp và sẽ không mở rộng cạnh của các tùy chọn đã tạo. Một hình ảnh dưới đây minh họa tốt hơn, Đó là ảnh chụp màn hình từ Chế độ xem thiết kế trong Android Studio. Hình chữ nhật màu vàng cho biết vị trí các mục tùy chọn sẽ được đặt. Màu tím biểu thị kích thước ban đầu trong DesignView. Màu đen cho biết kích thước khi chạy ứng dụng.

Design View of the toolbar

Cảm ơn sự giúp đỡ của bạn.

câu hỏi liên quan mà có thể có ích cho bất kỳ ai đi qua đây tìm cách để giải quyết một vấn đề tương tự:

+0

How are you thêm thanh công cụ cho hoạt động? Bạn đang sử dụng 'setSupportActionBar (Thanh công cụ)'? –

+0

@Lady_ari: Vâng tôi đang làm điều đó. Có cách nào khác không? Ngoài ra, nếu tôi muốn thêm Tiêu đề và biểu tượng, v.v., tôi có nên làm điều đó trước khi tôi đặt Thanh công cụ hay tôi nên sửa đổi đối tượng mà tôi nhận được khi tôi gọi getSupportActionBar()? –

+0

Tôi nghĩ tốt hơn nên sử dụng 'getSupportActionBar()' để sửa đổi tiêu đề thanh công cụ, v.v. –

Trả lời

16

Vì vậy, để đạt được điều này và có toàn quyền kiểm soát vùng đệm trong thanh công cụ Tôi đã tạo hai thanh công cụ.Thanh công cụ đầu tiên với chiều cao chuẩn 56dp và giây với chiều cao 72dp, cùng nhau tạo một thanh công cụ hai lớp theo quy định của thiết kế material design.

Và bởi vì tôi không làm tăng bất kỳ mục menu nào trong thanh công cụ thứ hai, tất cả các chế độ xem cusotm của tôi hoạt động như mong muốn.

Những dòng này vẫn cần phải được sử dụng mặc dù

app:contentInsetStart="0dp" 
    app:contentInsetEnd="0dp" 
    app:contentInsetLeft="0dp" 
    app:contentInsetRight="0dp" 
    android:clipToPadding="false" 

này giải quyết vấn đề của tôi nên bây giờ tôi bao gồm hai thanh công cụ vào XML của tôi.

+0

Đây là thứ duy nhất làm việc cho tôi. Cảm ơn ý tưởng tuyệt vời - hãy đặt một ToolBar thành supportActionBar() và sử dụng một công cụ khác cho bố cục tùy chỉnh của chúng tôi. – Chaitanya

+0

Cảm ơn vì điều này, nó đã tiết kiệm thời gian của tôi ~ – SwordBearer

1

Từ các tài liệu Toolbar:

Một hoặc nhiều chế độ xem tùy chỉnh. Ứng dụng có thể thêm các con tùy ý vào Thanh công cụ. Chúng sẽ xuất hiện ở vị trí này trong bố cục . Nếu Thanh công cụ của Chế độ xem con.LayoutParams cho biết giá trị Trọng số của CENTER_HORIZONTAL lượt xem sẽ cố gắng căn giữa trong không gian có sẵn còn lại trong Thanh công cụ sau khi tất cả các phần tử khác có số được đo.

Vì vậy, từ chế độ xem, chế độ xem tùy chỉnh của bạn hoạt động như bình thường. Trình đơn tùy chọn chiếm một lượng không gian nhất định trên thanh công cụ của bạn, do đó Thanh công cụ đang đo khoảng trống còn lại để chế độ xem tùy chỉnh của bạn vừa với.

+0

Yea, được rồi. Điều đó có ý nghĩa. Tôi đã nghĩ ra một cách để vượt qua nó. Tôi sẽ thử nó và cho bạn biết. Và tôi không thể upvote tại thời điểm này như tôi không có đủ đại diện:/ –

+0

Đó là alright. Vui mừng được giúp đỡ! –

+0

@JoeSovcik Bạn có thể tìm ra vấn đề này không. Tôi đã phá vỡ đầu của tôi về vấn đề này kể từ giờ! –

4

kể từ khi phiên bản 23 của các thư viện hỗ trợ thiết kế có một cách đơn giản hơn nhiều để làm điều đó bằng android.support.design.widget.CoordinatorLayout

Đây là một ví dụ:

<android.support.design.widget.CoordinatorLayout 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:fitsSystemWindows="true"> 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:popupTheme="@style/AppTheme.PopupOverlay">    
     </android.support.v7.widget.Toolbar> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="@color/project_light_green" 
      android:orientation="horizontal" 
      android:paddingLeft="@dimen/activity_horizontal_margin_half" 
      android:paddingRight="@dimen/activity_horizontal_margin_half" 
      android:paddingTop="@dimen/activity_vertical_margin_half"> 

      <ImageView 
       android:layout_width="24dp" 
       android:layout_height="24dp" 
       android:layout_margin="12dp" 
       android:src="@drawable/ic_search_24dp" /> 

      <EditText 
       android:id="@+id/search_field" 
       android:layout_width="0dp" 
       android:layout_height="48dp" 
       android:layout_weight="1" 
       android:background="@null" 
       android:hint="@string/autocomplete_hint" 
       android:singleLine="true" 
       android:textColor="@color/project_black" 
       android:textColorHint="@color/project_dark_gray"/> 

      <include layout="@layout/close_button" 
       android:id="@+id/clearButton"/> 

     </LinearLayout> 

    </android.support.design.widget.AppBarLayout> 

    <include layout="@layout/content_search_location" /> 

</android.support.design.widget.CoordinatorLayout> 

enter image description here

+0

Câu trả lời hữu ích nhất ở đó. –

Các vấn đề liên quan