gpt4 book ai didi

java - Android:编辑以编程方式添加的 View

转载 作者:行者123 更新时间:2023-12-02 09:02:04 25 4
gpt4 key购买 nike

所以我有一个消息应用程序,我可以在其中读取数据库并以编程方式呈现所有消息。问题是,当我处于不同的布局中时,我需要膨胀这些消息并随意编辑它们。例如,

val myView = inflater.inflate(R.layout.female_messaging_fragment, container, false)
...

val convLayout = myView.findViewById<LinearLayout>(R.id.conversations_layout)
val profileLayout = LinearLayout(context)

val recentMessage = TextView(context)
recentMessage.id = 5



val recentParams = LinearLayout.LayoutParams(ActionBar.LayoutParams.WRAP_CONTENT, ActionBar.LayoutParams.WRAP_CONTENT)

recentParams.setMargins(10, 0, 0, 0)

recentMessage.layoutParams = recentParams
recentMessage.textSize = 16f
if (didIsendLastMessage) {
val arrowIcon = ImageView(context)
Picasso.get().load(R.drawable.right_arrow).resize(50, 50).into(arrowIcon)
val imageParams = LinearLayout.LayoutParams(ActionBar.LayoutParams.WRAP_CONTENT, ActionBar.LayoutParams.WRAP_CONTENT)
imageParams.gravity = Gravity.CENTER
arrowIcon.layoutParams = imageParams
recentMessage.setText(mostRecentMessage)
arrowAndMessageLayout.addView(arrowIcon)
arrowAndMessageLayout.addView(recentMessage)
} else {
recentMessage.setText(mostRecentMessage)
arrowAndMessageLayout.addView(recentMessage)
}


nameLastmessageLayout.addView(arrowAndMessageLayout)


// Add namne and message to profile
profileLayout.addView(nameLastmessageLayout)
convLayout.addView(profileLayout)

然后采用不同的布局...

LayoutInflater inflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflater.inflate(R.layout.female_messaging_fragment, null);
TextView text = (TextView) v.findViewById(5);
text.setText("Something");

问题是,文本始终为空,我相信这是因为我以编程方式添加了 View 。我在这里还能做什么?谢谢!

最佳答案

膨胀 female_messaging_fragment 将返回 xml 的全新布局 View 对象,该对象可能是没有任何 TextView 的空白布局。

要获取 TextView 对象,您需要在其中添加 View 的 Layout 对象。

例如,根据您的代码,您在 arrowAndMessageLayout 中添加了 recentMessage ,因此要获取 recentMessage 的对象,您需要 的对象arrowAndMessageLayout 并且可以像下面这样 -

TextView text = arrowAndMessageLayout.findViewById(5);

或者

TextView text = convLayout.findViewById(5);

再次膨胀将返回没有 TextView 的全新容器。

希望这对您有帮助。

关于java - Android:编辑以编程方式添加的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60087168/

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