gpt4 book ai didi

android - 查看 Canvas 可见性问题

转载 作者:太空宇宙 更新时间:2023-11-03 11:21:13 27 4
gpt4 key购买 nike

我有这样的布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<com.components.game.GameView
android:id="@+id/game_id"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />

<RelativeLayout
android:id="@+id/ChatLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:visibility="invisible"
android:focusable="true"
android:focusableInTouchMode="true" >

<Button
android:id="@+id/ChatCancelButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="X" />

<Button
android:id="@+id/ChatOkButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="OK" />

<EditText
android:id="@+id/ChatEditText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/ChatOkButton"
android:layout_toRightOf="@+id/ChatCancelButton"
android:maxLength="50"
android:singleLine="true" />
</RelativeLayout>

</RelativeLayout>

它是 Canvas 上的 RelativeLayout。在开始时它是不可见的,但是当用户单击按钮时布局应该变得可见。问题是它没有变得可见。布局在那里,但它只是没有绘制它。如果我按下布局应该出现的位置,它会收到事件并打开键盘,但它不会绘制整个布局。有什么问题?

如果我在开始时将 RelativeLayout 设置为可见,它就可以正常工作。它显示布局,如果我在不可见和可见之间切换,它工作正常。

我做了一个几乎总是有效的解决方法。我开始布局可见,然后在 oncreate 中执行:

chatLayout.postDelayed(new Runnable() {

@Override
public void run() {
chatLayout.setVisibility(View.INVISIBLE);

}
}, 50);

但我不喜欢它,想了解问题所在。

代码:

它从一个向处理程序发送消息的 Canvas 按钮开始:

public void showInputLayout() {
Message.obtain(gameHandler, SHOW_INPUT_LAYOUT).sendToTarget();
}

在处理程序中:

case SHOW_INPUT_LAYOUT:
gameActivity.setChatVisibility(true);
break;

设置聊天可见性:

public void setChatVisibility(boolean isVisible) {
int visible = isVisible ? View.VISIBLE : View.INVISIBLE;
chatLayout.setVisibility(visible);
if(isVisible){
chatEditText.setFocusable(true);
chatEditText.requestFocus();
}
}

最佳答案

RelativeLayout 添加点击监听器,并在 GONEVISIBLE 之间切换可见性。尝试这样的事情:

int visibility = View.VISIBLE;
RelativeLayout layout = (RelativeLayout)findViewById(R.id.ChatLayout);
layout.setVisibility(visibility);
layout.setOnClickListener(new View.OnClickListener{
public void onClick(View v)
{
if(visibility == View.VISIBLE)
visibility = View.GONE;
else
visibility = View.VISIBLE;

v.setVisibility(visibility);
}
})

关于android - 查看 Canvas 可见性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7888112/

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