2016-01-19 65 views
1

我在Android即時聊天工作的Application.In聊天活動,我使用的是FrameLayout裏。繼是XML文件:無法隱藏的FrameLayout

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="#FCAB26" 
android:orientation="vertical" 
android:weightSum="1"> 

<ListView 
    android:id="@+id/list_view_messages" 
    android:layout_width="fill_parent" 
    android:layout_height="0dp" 
    android:layout_weight=".60" 
    android:background="@null" 
    android:divider="@null" 
    android:stackFromBottom="true" 
    android:transcriptMode="alwaysScroll"></ListView> 


<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="bottom" 
    android:layout_weight=".10" 
    android:orientation="horizontal" 
    android:weightSum="1"> 

    <ImageView 
     android:id="@+id/imgSmile" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight=".10" 
     android:src="@drawable/ic_msg_panel_smiles" 
     android:layout_gravity="center_vertical" 
     android:layout_marginRight="-10sp"/> 

    <com.rockerhieu.emojicon.EmojiconEditText 
     android:id="@+id/edtMessage" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom" 
     android:hint="Enter Message" 
     android:layout_weight=".60"></com.rockerhieu.emojicon.EmojiconEditText> 

    <Button 
     android:id="@+id/btnSendMessage" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom" 
     android:layout_weight=".30" 
     android:gravity="center" 
     android:onClick="onClick" 
     android:text="Send Message" /> 
</LinearLayout> 

<FrameLayout 
    android:id="@+id/emojicons" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight=".30" 
    android:visibility="gone" /> 

我已經設置了可視性框架已經消失,但它仍然佔據着該區域。我希望FrameLayout在開始時不佔用空間.ImageView,EditText和Send Message按鈕應位於屏幕的底部。單擊ImageView時,會顯示錶情符號面板,並且軟鍵盤被隱藏,我已經使用了以下代碼:

imageView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      hideKeyboard(); // hiding the keyboard 
      showEmojiPopUp(!showEmoji); 
     } 
    }); 

// Displaying the FrameLayout containing the list of Emoticons 
public void showEmojiPopUp(boolean showEmoji) { 
    FrameLayout frameLayout = (FrameLayout) findViewById(R.id.emojicons); 
    frameLayout.setVisibility(View.VISIBLE); 
} 

// Hiding the FrameLayout containing the list of Emoticons 
public void hideEmojiPopUp(boolean hideEmoji) { 
    FrameLayout frameLayout = (FrameLayout) findViewById(R.id.emojicons); 
    frameLayout.setVisibility(View.INVISIBLE); 
} 

它工作正常。所以我的問題是如何設置我的框架在活動創建時不可見。它應該顯示在clickinh圖像視圖上。軟鍵盤和FameLayout的高度應該相同。Screenshots給出下面:

1.Screenshot

Screenshot

2.在點擊圖像視圖

enter image description here

3.點擊EditText上 enter image description here

請幫我解決這個問題。

+0

我認爲在這種情況下,你不應該在這種情況下使用的重量。試着給它固定高度 –

+0

怎麼樣'setVisibility(View.GONE)' –

回答

2

這是因爲你使用的是重量而發生的。 刪除權重和layouts_weight並使用wrap_content。

<FrameLayout 
    android:id="@+id/emojicons" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:visibility="gone" /> 

並給出framelay的動態高度。

int deviceHeight; 
FrameLayout frameLayout; 

Display display = getWindowManager().getDefaultDisplay(); 
     Point size = new Point(); 
      display.getSize(size); 

      deviceHeight = size.y; 

frameLayout= (FrameLayout) findViewById(R.id.emojicons); 

     frameLayout.getLayoutParams().height = (int) (deviceHeight/3); 
    frameLayout.requestLayout(); 

代替

public void hideEmojiPopUp(boolean hideEmoji) { 
    FrameLayout frameLayout = (FrameLayout) findViewById(R.id.emojicons); 
    frameLayout.setVisibility(View.INVISIBLE); 
} 

使用這

public void hideEmojiPopUp(boolean hideEmoji) { 
    FrameLayout frameLayout = (FrameLayout) findViewById(R.id.emojicons); 
    frameLayout.setVisibility(View.GONE); 
} 
+0

感謝Aakash.It正在爲我工​​作,你能告訴我如何控制軟鍵盤的高度嗎?其實在我的情況下,軟鍵盤和表情符號鍵盤的高度是不同的。我想使它平等。 –

1

使用View.INVISIBLEView.GONE代替

// Hiding the FrameLayout containing the list of Emoticons 
public void hideEmojiPopUp(boolean hideEmoji) { 
    FrameLayout frameLayout = (FrameLayout) findViewById(R.id.emojicons); 
    frameLayout.setVisibility(View.GONE); 
} 

View.INVISIBLE

這種觀點是無形的,但它仍然佔用空間佈局 目的。

View.GONE

這種觀點是不可見的,並且它不承擔佈局 目的的任何空間。

+0

在點擊圖像視圖,一切工作fine.But問題是在創建第一次聊天活動時,FrameLayout裏佔據一定的空間.U可以看到XML我已經設置了可視性走了。我也不想的FrameLayout在這裏佔據了一些空間文件。 –

+0

它仍然無法正常工作。 Plz的幫助。 –

0

您正在使用無形的,而不是消失。 INVISIBLE只隱藏視圖但不留空間,如果不存在,則刪除空的空間。所以在這裏使用GONE。

+0

我在設計ChAT活性。作爲屏幕u能看到越來越的問題,我想一個列表視圖,線性佈局(含有imageview的,的EditText,發送信息按鈕),並在一個design.I幀佈局已經使用線性佈局解決我purpose.But它不工作了我。我曾使用過早期的重量甚至。所以作爲設置了的公開程度後,。當我刪除從線性佈局重量幀佈局中佔據一定的空間,並指定固定的高度,仍然是其不爲我工作。 –

+0

你需要採取甲A的LinearLayout與「Match_Parent」寬度和高度,方向垂直的主父。在這個LinearLayout裏面,帶一個ListView,寬度爲match_parent,高度爲0dp。並給予重量1.現在再採用另一個LinearLayout來表示圖像的這種設計佈局,edittext nad發送button.close這個LinearLayout在這裏,最後創建您的視圖爲imozy。 –