2013-07-24 33 views
7

Tôi muốn tạo hoạt động giống như cửa sổ bật lênHoạt động trên Android với Bố cục trong suốt

Đó là nền trong suốt cho hoạt động als tôi muốn hiển thị nó ở vị trí tùy chỉnh trên màn hình ở góc phải của màn hình thiết bị

những gì tôi đã làm là bên onCreate pop qua như activty

Display display = getWindow().getWindowManager().getDefaultDisplay(); 
    WindowManager.LayoutParams params = getWindow().getAttributes(); 
    // params.x = -20; 
    params.height = (display.getHeight())/2; 
    params.width = (display.getWidth())/2; 
    // params.y = -10; 
    params.gravity = Gravity.RIGHT; 
    getWindow().setAttributes(params); 

trong maifest

<activity android:name=".DialogAct" 
      android:theme="@android:style/Theme.Holo.Light.NoActionBar"></activity> 

Đây là những gì hoạt động khởi chạy của tôi trông giống như

enter image description here

Vì vậy, khi tôi bấm vào tìm kiếm trên thanh hành động tôi đang gửi ý định hoạt động mới của tôi .Tôi muốn để làm cho nó trông giống như pop ngay dưới biểu tượng tìm kiếm Điều này tôi nhận được là enter image description here

Bạn có thể thấy tìm kiếm hoạt động trước đó được nhấp và hoạt động mới được tải (phần màu xanh lam). Như bạn có thể thấy hoạt động mới di chuyển đến giữa màn hình. nhưng tôi muốn nó ngay bên dưới biểu tượng thanh hành động.

tôi đã thử params.gravity = Gravity.TOP | Gravity.RIGHT;. sau đó tôi đã nhận này

enter image description here

tôi muốn đặt nó ngay bên dưới thanh tác dụng của hoạt động trước đó. Tôi đã thử nhiều cách để đạt được nó nhưng thất bại. để bất cứ ai có thể đề nghị một tole

Trả lời

0

Trong biểu hiện của bạn bạn đã viết

<activity android:name=".DialogAct" 
      android:theme="@android:style/Theme.Holo.Light.NoActionBar"> 

bạn nên loại bỏ các NoActionBar phần

<activity android:name=".DialogAct" 
      android:theme="@android:style/Theme.Holo.Light"> 
+0

nếu cho nó hiển thị thanh tiêu đề trong hoạt động của tôi. Tôi không muốn hiển thị rằng – edwin

+0

nhưng trong câu hỏi của bạn, bạn nói rằng bạn muốn nó bên dưới thanh hành động, làm thế nào bạn có thể phát hiện xem nó là dưới thanh hành động nếu bạn không sử dụng một thanh hành động? –

+0

vấn đề của tôi là màu xanh trong ảnh chụp màn hình là một hoạt động. với thanh tiêu đề/thanh tác vụ và những gì bạn thấy đằng sau đó là hoạt động trước đó điều hướng đến hoạt động này. – edwin

0

tôi có thể nghĩ đến hai điều có thể giúp đỡ. Trước tiên, bạn có thể thử thay đổi Theme trong số manifest thành android:theme="@android:style/Theme.Dialog và điều này sẽ cung cấp cho bạn giao diện mong muốn.

Sửa

Bạn có thể ẩn thanh tiêu đề với

this.requestWindowFeature(Window.FEATURE_NO_TITLE); 

chỉ cần đảm bảo để gọi nó trước khi gọi setContentView()

Ngoài ra, nếu nó không cần phải là một riêng biệt Activity bạn có thể sử dụng PopupWindow. Với điều này, bạn có thể sử dụng isAboveAnchor và sử dụng các ActionBar làm neo và đặt nó bên dưới hoặc sử dụng một trong các phương pháp liên quan khác. Tôi không biết nếu một trong những điều này sẽ đáp ứng những gì bạn cần nhưng họ có thể làm việc cho bạn.

+0

tôi cố gắng thay đổi chủ đề của mình nhưng nó không giúp nó đưa ra thanh tiêu đề. mà nên tránh trong trường hợp của tôi. Tôi không thể đi cho cửa sổ popover kể từ khi có nhiều giao dịch mảnh vỡ sẽ xảy ra trong hoạt động của tôi. vì vậy tôi cần toàn quyền kiểm soát nó. Thant của lý do tại sao tôi đã cách tiếp cận này – edwin

+0

Nếu thanh tiêu đề là vấn đề duy nhất của bạn với giải pháp đầu tiên sau đó xem chỉnh sửa của tôi. Điều đó sẽ cho phép bạn ẩn thanh tiêu đề – codeMagic

+0

Tôi đã thử nó. Nhưng vẫn không thể đạt được những gì tôi cần. xin vui lòng kiểm tra chỉnh sửa. – edwin

-1

Hãy thử Gravity to Center thay vì Top Right ..

+0

tôi muốn điều này ở bên phải màn hình, đó là lý do tại sao tôi cho nó. Nếu cho trung tâm nó sẽ di chuyển đến trung tâm của màn hình – edwin

+0

bạn muốn nó trên cùng bên phải ?? –

+0

nếu có thì cung cấp lợi nhuận hàng đầu cho các thông số và xem nó phản ứng như thế nào? –

0

@edwin Những gì bạn có thể làm là sau khi thực hiện

params.gravity = Gravity.TOP | Gravity.RIGHT; 

bạn chỉ cần cung cấp một số lợi nhuận từ đầu, như thế này:

LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
    params.setMargins(left, top, right, bottom); 
    yourCustomPopOveractivity.setLayoutParams(params); 

và tôi nghĩ rằng sau khi làm điều này, bạn có thể nhận được vị trí cần thiết của bạn và mọi thứ bạn vừa làm là đúng.

Vui lòng thử sau đó cho tôi biết

+0

ĐẦU TIÊN CỦA TẤT CẢ CÁC CẢM ƠN CHO NHỮNG LỢI NHUẬN CỦA BẠN. THỰC TẾ TÔI ĐÃ TÌM HIỂU GIẢI PHÁP CHO SAU NÀY SAU KHI ĐĂNG NHẬP CÂU HỎI TRONG MỘT CÁCH KHÁC QUA MỘT CÁCH LÀM VIỆC NHỎ TRONG XML. – edwin

+0

@edwin Rất tuyệt! bạn tìm thấy câu trả lời. Vì vậy, vui lòng cung cấp giải pháp của bạn ở đây và nếu câu trả lời của tôi cũng đúng và hữu ích thì vui lòng bỏ phiếu cho câu trả lời hoặc trả lời chấp nhận để nếu có ai gặp phải vấn đề tương tự có thể tìm câu trả lời ở đây. :) –