cuốn sách gpt4 ai đã làm

Dung lượng/tràn ActionBar không thay đổi theo hướng

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-02 19:55:46 27 4
mua khóa gpt4 Nike

Tôi có một ứng dụng sử dụng ActionBar và tôi tự xử lý các thay đổi về hướng:

android:configChanges="bàn phím|keyboardHidden|orientation|screenSize"

...và menu phải vừa với ActionBar mà không tràn theo chiều ngang, nhưng không tràn theo chiều dọc:









Khi khởi động, điều này hoạt động tốt:

phong cảnh: ActionBar rộng với tất cả các mục trong

chân dung: ActionBar thu hẹp bị tràn(Có, tôi có thể buộc tất cả các mục luôn hiển thị và chúng sẽ vừa vặn, như hiển thị bên dưới, nhưng điều này có thể bị hỏng trên máy tính bảng nhỏ hơn)

Dung lượng của ActionBar dường như không thay đổi khi trình mô phỏng thay đổi hướng:

Chân dung, khi tôi bắt đầu phong cảnh: thu hẹp ActionBar với tất cả các mục trong(Không sao, nhưng không nhất quán)

Phong cảnh, khi tôi bắt đầu chụp chân dung: ActionBar rộng có trànĐiều này trông thực sự ngớ ngẩn, đó là lý do tại sao tôi sẽ sửa nó.

Tôi đã thêm cuộc gọi này vào vô hiệuOptionsMenu() , nhưng nó không giúp ích gì:

@Ghi đè
public void onConfigurationChanged(Cấu hình newConfig)
{
có lẽMoveSomeViewsAround(newConfig);
super.onConfigurationChanged(newConfig);
vô hiệuOptionsMenu();
}

(Tôi thực sự đang gọi nó thông qua sự phản chiếu để tương thích ngược, nhưng trình gỡ lỗi cho tôi biết nó thực sự được gọi và không gặp phải ngoại lệ nào.)

không hợp lệOptionsMenu() thực sự kết thúc việc gọi onCreateOptionsMenu() trước khi quay lại (làm tăng lại menu) và tôi có thể thấy bên trong cái sau getResources().getConfiguration().orientation đã thay đổi. Vì vậy, nó thực sự khó hiểu. Nếu bạn tạo lại menu tùy chọn, thì chính ActionBar đó phải lưu trữ chiều rộng khi hướng thay đổi?

Có cách nào để tạo lại ActionBar mà không hủy/tạo Hoạt động không?(vì cái sau hơi đắt trong trường hợp của tôi)

biên tập: Đây là mộtdự án mẫu tối thiểuvấn đề hiển thị.

编辑 2: Tôi đã nghĩ đến việc kiểm tra độ rộng màn hình và điều chỉnh cờ showAsAction theo chương trình giữa luôn luôn và không bao giờ một cách thích hợp, nhưng điều đó đòi hỏi phải biết (hoặc đoán) chiều rộng của từng mục. API công khai của ActionBarKhông giúp tôi vào thời điểm này.

câu trả lời hay nhất

Tôi gặp phải vấn đề này và nghĩ ra một cách hack hoạt động 100%.

Cuối cùng tôi đã gọi không hợp lệOptionsMenu() hai lần. Nhìn vào đoạn mã dưới đây:

hack boolean riêng tưActionBarReset = false;

@Ghi đè
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);

// một bản hack để đặt lại các mục trong thanh hành động.
hackActionBarReset = true;
vô hiệuOptionsMenu();
hackActionBarReset = false;
vô hiệuOptionsMenu();

}

Sau đó, trong onCreateOptionsMenu() của bạn, hãy đặt mục này trên mục menu bạn muốn hiển thị:

item.setShowAsAction(MenuItem.SHOW_AS_ACTION_WITH_TEXT | (hackActionBarReset ? MenuItem.SHOW_AS_ACTION_NEVER : MenuItem.SHOW_AS_ACTION_IF_ROOM));

Không phải là một giải pháp tuyệt vời, nhưng nó hoạt động.

Về android - Dung lượng/tràn ActionBar không thay đổi theo hướng, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/7625964/

27 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress