1. 程式人生 > >DialogFragment全屏加控制元件顯示在底部

DialogFragment全屏加控制元件顯示在底部

大家都知道dialogfragment單純的全屏顯示很容易(什麼什麼Match_parent解決),單純的顯示在底部也很容易(什麼什麼Gravity.Bottom解決),但是又要全屏又要顯示在底部就不容易了。

為什麼呢?全屏顯示,把幾個控制元件顯示在底部,你會發現這個控制元件神奇的消失了。


就像這樣,上半部分是0dp,weight=1,到了手機上,下面這些控制元件不會顯示,除非你上半部分的0dp改成固定的長度。

就算你使用這樣的程式碼

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation=
"vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/pop_content" android:background="@color/colorPrimary"> <ImageView android:layout_width="50dp" android:layout_height="50dp" android:src="@mipmap/pop_close" android:layout_gravity="center_horizontal|bottom"
/> </FrameLayout>

他會全屏變成colorprimary的顏色,並不會顯示imageview。

1.使用這樣的方法

WindowManager.LayoutParams attributes = window.getAttributes();
attributes.width=WindowManager.LayoutParams.MATCH_PARENT;
attributes.height=WindowManager.LayoutParams.MATCH_PARENT-getBarHeight();
他會全屏顯示,但是imageview不顯示

2.使用這樣的方法

這種方法,他會顯示imageview,但是通知欄被遮住了,我想通知欄不被遮住.因為我原本介面是顯示通知欄的,彈出dialog後整個介面往上滑動.這樣的效果不好.

this.setStyle(DialogFragment.STYLE_NORMAL,android.R.style.Theme_NoTitleBar_Fullscreen);
                WindowManager.LayoutParams attributes = window.getAttributes();
attributes.width=WindowManager.LayoutParams.MATCH_PARENT;
//                attributes.height=WindowManager.LayoutParams.MATCH_PARENT-getBarHeight();

總結下來就是:1要全屏顯示,2通知欄不被頂掉;

那我就自定義一個樣式

<style name="ShowTitleDontShowActionBar">
    <item name="android:windowNoTitle">false</item>
    <item name="android:layout_height">match_parent</item>
    <item name="android:fitsSystemWindows">true</item>
    <item name="android:windowActionBar">false</item>
</style>
this.setStyle(DialogFragment.STYLE_NORMAL,R.style.ShowTitleDontShowActionBar);
        Dialog dialog = getDialog();
        if(dialog!=null){
            Window window = dialog.getWindow();
            if(window!=null){
                WindowManager.LayoutParams attributes = window.getAttributes();
attributes.width=WindowManager.LayoutParams.MATCH_PARENT;
//                attributes.height=WindowManager.LayoutParams.MATCH_PARENT-getBarHeight();
//                attributes.gravity= Gravity.BOTTOM;
window.setAttributes(attributes);
//                window.setBackgroundDrawable(null);
window.setBackgroundDrawable(new ColorDrawable(ContextCompat.getColor(getContext(),R.color.half_translucent)));
}
        }

要顯示title(就是通知欄),要全屏height=match_parent.好了下面兩行程式碼不知道有沒有用,加上再說。完全O雞巴K,問題解決

相關推薦

DialogFragment控制元件顯示底部

大家都知道dialogfragment單純的全屏顯示很容易(什麼什麼Match_parent解決),單純的顯示在底部也很容易(什麼什麼Gravity.Bottom解決),但是又要全屏又要顯示在底部就不容易了。 為什麼呢?全屏顯示,把幾個控制元件顯示在底部,你會發現這個控制元

Android開發 - 設置DialogFragment顯示

方法 err override cat dial group 如果 全屏顯示 log 默認的DialogFragment並不是全屏,但有些需求需要我們將對話框設置為全屏(內容全屏),Android並沒有提供直接的API,通過其它不同的方法設置全屏在不同的機型上總有一些詭異的

設定DialogFragment顯示

預設的DialogFragment並不是全屏,但有些需求需要我們將對話方塊設定為全屏(內容全屏),Android並沒有提供直接的API,通過其它不同的方法設定全屏在不同的機型上總有一些詭異的問題,經過測試,下面的方法可以實現各個機型的全屏。 測試 SDK Ver

ASP.NET中利用DataGrid控制元件顯示圖片以及在圖片和文字上超連結

資料表:     介面程式碼:                  <asp:DataGrid ID="DataGrid1" runat="server" AutoGenerateColumns="False" BorderWidth="0px"  PageSiz

IOS開發storyboard建立controller黑以及控制元件顯示問題。

其實我覺得StoryBoard真的很沒用,除非是特別簡單就一兩個頁面,而且頁面樣式簡單的還比較方便,稍微複雜點,就不好用了。推薦刪掉StoryBoard,用xib來自定義所有的view。 今天用了下StoryBoard,建了一個頁面A,一個頁面B,A點選按鈕可以到B頁面,

[轉]一種讓超大banner圖片不拉伸、寬、居中顯示的方法

posit code overflow 都是 flow cnblogs width banner 圖片 現在很多網站的Banner圖片都是全屏寬度的,這樣的網站看起來顯得很大氣。這種Banner一般都是做一張很大的圖片,然後在不同分辨率下都是顯示圖片的中間部分。實現方法如下

Android中使用ImageView控制元件顯示網路圖片

在android4.0以後的版本中,為了使得主介面流暢,所以設定了不允許在主執行緒中訪問網路,為了安全,又不允許在其它執行緒中訪問控制元件,這樣就造成了ImageView等需要使用網路的控制元件更新時的問題,本文以Handler+Runnable的方式實現了ImageView控制元件顯示網路圖片.

Asp.net Image控制元件顯示Bitmap生成影象

from:https://blog.csdn.net/qq_29011299/article/details/81137980 using(Bitmap bmp=new Bitmap(300,50))     {    &nbs

使用TreeView控制元件顯示磁碟檔案

using System; using System.Windows.Forms; using System.IO; namespace WindowsFormsApplication1 { public partial class Form1 : Form {

手機顯示資料的原理:手機通過WebView控制元件顯示網頁資料

WebView控制元件是用於顯示網頁的,手機根據網頁建立一個WebView,之後顯示出來,所以顯示WebView網頁是通過WebView控制元件顯示的。     <script type="text/javascript" charset="utf-8

Winform下使用ListView控制元件和ImageList控制元件顯示圖片縮圖

一、基本概念 1、ImageList控制元件 ImageList元件,又稱為圖片儲存元件,它主要用於儲存圖片資源,然後在控制元件上顯示出來,這樣就簡化了對圖片的管理。ImageList元件的主要屬性是Images,它包含關聯控制元件將要使用的圖片。每個單獨的圖片可以通過其索引值或鍵值來訪問。

unity3d嵌入到iOS工程(3d物體和iOS控制元件顯示在同一個view上)

最近公司要開發一款用於3d展示的應用,通過在網上拜讀各大神的帖子,終於完美解決此類問題。(unity3d版本2017.3,xcode9.2) 前邊unity3d打包iOS工程的方法在此就不做贅述,其他帖子基本可以解決,本帖直接上乾貨。 1、在打包好的iOS工程中,找到UnityAppCont

MFC中picture控制元件顯示圖片

1.開啟BMP圖片 CBitmap* m_pBitmap = new CBitmap; m_pBitmap->LoadBitmap(IDB_BITMAP1);   2.第一種方式,用CDC顯示 CDC *pDC = GetDlgItem(IDC_AAAA)->Ge

DatePicker控制元件顯示具體的時分秒

DatePicker控制元件顯示具體的時分秒 聽語音   | 瀏覽:3331 | 更新:2017-04-18 18:37 1 2 3 4 5 6 分步閱讀 在我們開發程式的

C#如何根據時間控制元件顯示資料庫中對應資訊(下)

選定時間範圍,顯示資訊 下篇的需求是選擇一個時間段之間的資料    程式碼如下: <1>Entity using System; using System.Collections.Generic; using System.

C#如何根據時間控制元件顯示資料庫中對應資訊(上)

前言 聽說有的朋友們機房合作時只用了兩天就把程式碼編寫完成了,但我實際編碼時卻經常被卡住,還是技術不到家啊,重構時用到的複用性強的還可以,以前沒做過的可就懵逼了。所以,我又要開始一波總結了。 這裡分為兩部分:根據一個時間控制元件顯示資訊在這篇。根據兩個時間控制元件顯示資訊請

基於python3.6+pyQT5利用Graphics View 控制元件顯示影象並實現其縮放

     利用eric6+QTdesigner 實現了軟體介面的編寫,軟體介面如圖所示,一共有三個控制元件(放大按鈕、縮小按鈕以及Graphics View),具體佈置如圖所示,將按鈕項式名稱改為“放大”、“縮小”。 然後編譯介面,生成程式碼如下: from Py

C#程式設計學習(05):使用webbroswer控制元件顯示地圖並標註點位座標

  控制元件準備:新建windows窗體應用程式,新增一個標記按鈕(btn_tagPos)、標籤控制元件(經度和緯度,實時經緯度顯示)、編輯框控制元件(記錄輸入的經度和緯度值)、webbroswer控制元件(webbroswer1)和計時器控制元件(timer1) 實現程式碼:

Android P 版本 按power鍵熄再亮UI控制元件無響應

測試步驟:  [1]設定-->安全性和位置資訊-->螢幕鎖定-->選擇"無" [2]進入可以本地僅僅可以重新整理的介面. [3]先熄屏,然後在亮屏. [4]發現UI有卡死的效果.(點選無反應,上次滑動也無反應) [5]按back/home/Recents,

解決DialogFragment時狀態列變黑

這是一個引用 https://blog.csdn.net/jingzz1/article/details/83061780 自己修改後的:   import android.app.Activity; import android.app.Dialog; import