gpt4 book ai didi

android - 无法隐藏 FrameLayout

转载 作者:行者123 更新时间:2023-11-29 17:25:30 24 4
gpt4 key购买 nike

我正在开发 Android 即时聊天应用程序。在聊天 Activity 中,我正在使用 FrameLayout。以下是 xml 文件:

<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 和发送消息按钮应位于屏幕底部。单击显示 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);
}

它工作正常。所以我的问题是如何在创建 Activity 时将我的框架设置为不可见。它应该显示在 clickinh ImageView 上。软键盘和 FameLayout 的高度应该相同。屏幕截图如下:

1.截图

Screenshot

<强>2。点击图片查看

enter image description here

<强>3。单击 EditText enter image description here

请帮我解决这个问题。

最佳答案

发生这种情况是因为您使用了权重。删除 weightsum 和 layouts_weight 并使用 wrap_content。

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

并动态地赋予 framelayout 其高度。

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);
}

关于android - 无法隐藏 FrameLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34869554/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com