gpt4 book ai didi

java - CardView 未使用 LayoutInflater 正确膨胀

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

我想以编程方式添加 CardView。

这是我的主要 Activity XML 布局 (activity_main.xml)

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

这是我的 CardViewTemplate (card_view_template.xml)

<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/cardViewTemplate"
android:layout_width="160dp"
android:layout_height="190dp"
android:layout_margin="10dp"
android:clickable="true"
android:foreground="?android:selectableItemBackground">

<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="This is a Card" />

</androidx.cardview.widget.CardView>

这是我的 Java 代码 (MainActivity.java)

LayoutInflater inflater = getLayoutInflater();
ViewGroup parent = findViewById(R.id.linearLayout1);
inflater.inflate(R.layout.card_view_template, parent);

See Output

到这里为止一切正常。

现在我想在 activity_main.xml 中的某个位置添加卡片,因为我使用多个 CardView,我想在某个位置添加卡片。因此,我尝试了以下代码,而不是上面的代码:

LayoutInflater inflater = getLayoutInflater();
View view = inflater.inflate(R.layout.card_view_template, null);
ViewGroup parent = findViewById(R.id.linearLayout1);
parent.addView(view, 0);

但它无法正常充气。只有文本可见,卡片似乎没有出现。 See Output Here

最佳答案

动态添加 View 时,我们不应该使用 null ViewGroup 父级来膨胀 View

在这个View view = inflater.inflate(R.layout.card_view_template, null);这里parent被指定为null,这导致了问题。

指定View将附加到的父级,并且仅将附加到父级设置为false。这样,Parent 将被指定但不会附加。

因此,首先声明父级(root),然后创建View并指定父级(root)并设置附加到父级(root)false

以下说法正确的是View view = inflater.inflate(R.layout.card_view_template,parent, false);

因此完整的代码将是:

LayoutInflater inflater = getLayoutInflater();
ViewGroup parent = findViewById(R.id.linearLayout1);
View view = inflater.inflate(R.layout.card_view_template, parent, false);
parent.addView(view, 0);

关于java - CardView 未使用 LayoutInflater 正确膨胀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58719406/

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