android - 为什么动态设置文本到 TextView 在硬编码时在弹出窗口中不可见

标签 android

我正在尝试生成包含动态生成文本的弹出窗口。日志输出清楚地表明所需的文本实际上已设置为 textView,但我不明白为什么它没有显示在应用程序上。

主 Activity .java

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    linearLayout = (LinearLayout) findViewById(R.id.main_activity_parent_layout);
    int id = item.getItemId();
    if(id == R.id.info_button){

        layoutInflater = (LayoutInflater) getApplicationContext().getSystemService(LAYOUT_INFLATER_SERVICE);

        //Updating a textview in different layout xml from the main activity
        LinearLayout vi = (LinearLayout)layoutInflater.inflate(R.layout.activity_info, null);
        TextView textView = vi.findViewById(R.id.info);
        textView.setText(R.string.main_activity_info);
        Log.i("MainActivity",String.valueOf(textView.getText()));

        ViewGroup container = (ViewGroup)layoutInflater.inflate(R.layout.activity_info,null);

        popupWindow = new PopupWindow(container, WindowManager.LayoutParams.WRAP_CONTENT,WindowManager.LayoutParams.WRAP_CONTENT,true);
        popupWindow.setOutsideTouchable(true);
        popupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
        //Note showAtLocation method should always in end for proper rendering of poup Window
        popupWindow.showAtLocation(linearLayout,Gravity.TOP,0,100);

    }
    return super.onOptionsItemSelected(item);
}

Activity 信息.xml

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

    <TextView
        android:id="@+id/info"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/white"
        android:padding="8dp"
        android:text="hello"
        android:textAppearance="?android:textAppearanceMedium"
        android:textColor="@android:color/black"/>

</LinearLayout>

弹出窗口显示 hello,这是硬编码文本。

最佳答案

您正在膨胀 R.layout.activity_info 两次并丢失您在此过程中更改的 TextView。进行以下更改以保留第一次通货膨胀和您的修改:

popupWindow = new PopupWindow(vi, WindowManager.LayoutParams.WRAP_CONTENT,WindowManager.LayoutParams.WRAP_CONTENT,true);

关于android - 为什么动态设置文本到 TextView 在硬编码时在弹出窗口中不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45389710/

相关文章:

android - 如何将字符串添加到 JsonArray

Android Google Maps,如何让每个Marker InfoWindow打开不同的Activity?

android - 应用关闭时收到通知

android - Android-日志中出现IOException错误

android - 我总是得到 0 个 queryBuilder().where(). Between() 结果

Android 位图大小超出 VM 预算错误

android - 更改通知布局

android - 如何等待电子邮件 Intent 完成并获得结果?

java - flutter 医生结果为 "cmdline-tools component is missing"

android - ListSelector 适用于整个列表