安卓。 TableLayout 不显示。图像视图问题

Posted

技术标签:

【中文标题】安卓。 TableLayout 不显示。图像视图问题【英文标题】:Android. TableLayout does not displayed. ImageView problem 【发布时间】:2021-08-04 09:30:27 【问题描述】:

我是 android 新手,不明白它是如何工作的。我有这个 XML 代码

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/mainWindow"
    android:layout_
    android:layout_>

    <TableLayout
        android:id="@+id/katalog"
        android:layout_
        android:layout_
        app:layout_constraintBottom_toTopOf="@+id/button5"
        app:layout_constraintStart_toStartOf="parent">

        <TableRow
            android:id="@+id/row"
            android:layout_
            android:layout_>

            <ImageView                                  // problem is here
                android:id="@+id/imageView"
                android:layout_
                android:layout_
                tools:srcCompat="@tools:sample/avatars" />

            <LinearLayout
                android:id="@+id/linear"
                android:layout_
                android:layout_
                android:orientation="vertical">

                <TextView
                    android:id="@+id/textView11"
                    android:layout_
                    android:layout_
                    android:text="Name"
                    android:textSize="18sp" />

                <TextView
                    android:id="@+id/textView12"
                    android:layout_
                    android:layout_
                    android:text="Description"
                    android:textSize="18sp" />

                <TextView
                    android:id="@+id/textView13"
                    android:layout_
                    android:layout_
                    android:text="Stock"
                    android:textSize="18sp" />

                <Button
                    android:id="@+id/button9"
                    android:layout_
                    android:layout_
                    android:text="Button" />
            </LinearLayout>
        </TableRow>

    </TableLayout>

    <Button
        android:id="@+id/button3"
        android:layout_
        android:layout_
        android:text="Stuff"
        app:backgroundTint="#8BC34A"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

    <Button
        android:id="@+id/button5"
        android:layout_
        android:layout_
        android:layout_marginEnd="1dp"
        android:layout_marginRight="1dp"
        android:text="Person"
        app:backgroundTint="#8BC34A"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/button6"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toEndOf="@+id/button3" />

    <Button
        android:id="@+id/button6"
        android:layout_
        android:layout_
        android:layout_marginStart="1dp"
        android:layout_marginLeft="1dp"
        android:text="card"
        app:backgroundTint="#07464E"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toEndOf="@+id/button5" />

</androidx.constraintlayout.widget.ConstraintLayout>

我还有另一个几乎相同的选项。但是这个没有显示。 Java 类也很少有按钮的动作监听器,而 TableLayout 没有。但是另一个带有表格布局的java类没有任何代码,就像那样

public class admpanel extends lk
    private TableLayout table;

    @SuppressLint("SetTextI18n")
    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.admpanel);
    

那就行了。

附:另一个 TableLayout 没有显示,因为我忘了使用“id”作为片段,然后我修复了它。但现在我不知道

编辑:如果我删除 ImageView,该代码开始工作。如何使用图像视图?有针对性的问题

【问题讨论】:

嗨@Specator 你能用android:src="@mipmap/ic_launcher" 替换行tools:srcCompat="@tools:sample/avatars" 并试一试吗? @Kartik 不起作用。但是如果我删除头像(imageView),它就会开始工作。 @Kartik 如果我扩展 FragmentActivity 会起作用。但仅适用于android:src="@mipmap/ic_launcher" 如果你也扩展 AppCompatActivity 这将起作用。 【参考方案1】:

您的代码的问题是代码没有为 imageView 指定正确的 android:src 或 app:srcCompat ,这是将 UmageView 膨胀到某个高度所必需的,或者它认为高度为 0dp 导致 ImageView 不显示向上。 tools:src 仅用于在 XML 设计选项卡中显示图像,以了解多少空间或视图的外观。指定的图像不能用于在应用程序中显示它。我已经更新了您的代码以获得更好的设计,并为您的 ImageView (Resource here) 添加了正确的图像。将图像保存在可绘制文件夹中为 a12_logo。如果您有任何问题,请检查此代码并发表评论。

此外,如果此 TableLayout 的目的是用于显示项目列表,请切换到 RecyclerView 以获得更好的性能和更轻松的数据处理。

此外,您的按钮具有固定的高度和宽度,这并不理想,因为某些设备的按钮可能会超出屏幕,因此我为按钮添加了更好的代码。

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main"
android:layout_
android:layout_>

    <TableLayout
        android:id="@+id/katalog"
        android:layout_
        android:layout_
        android:stretchColumns="1"
        app:layout_constraintBottom_toTopOf="@id/button3">

        <TableRow
            android:id="@+id/row"
            android:layout_
            android:layout_>

            <ImageView
                android:id="@+id/imageView"
                android:layout_
                android:layout_
                android:layout_column="0"
                android:src="@drawable/a12_logo" />

            <LinearLayout
                android:id="@+id/linear"
                android:layout_
                android:layout_
                android:layout_column="1"
                android:orientation="vertical">

            <TextView
                android:id="@+id/textView11"
                android:layout_
                android:layout_
                android:text="Name"
                android:textSize="18sp" />

                <TextView
                    android:id="@+id/textView12"
                    android:layout_
                    android:layout_
                    android:text="Description"
                    android:textSize="18sp" />

                <TextView
                    android:id="@+id/textView13"
                    android:layout_
                    android:layout_
                    android:text="Stock"
                    android:textSize="18sp" />

                <Button
                    android:id="@+id/button9"
                    android:layout_
                    android:layout_
                    android:text="Button" />
            </LinearLayout>
        </TableRow>
    </TableLayout>

    <Button
        android:id="@+id/button3"
        android:layout_
        android:layout_
        android:text="Stuff"
        app:backgroundTint="#8BC34A"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/button5"
        app:layout_constraintHorizontal_chainStyle="spread"
        app:layout_constraintStart_toStartOf="parent" />

    <Button
        android:id="@+id/button5"
        android:layout_
        android:layout_
        android:layout_marginEnd="1dp"
        android:text="Person"
        app:backgroundTint="#8BC34A"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/button6"
        app:layout_constraintStart_toEndOf="@+id/button3" />

    <Button
        android:id="@+id/button6"
        android:layout_
        android:layout_
        android:layout_marginStart="1dp"
        android:text="card"
        app:backgroundTint="#07464E"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/button5" />
</androidx.constraintlayout.widget.ConstraintLayout>

【讨论】:

@Spectator 很高兴我能帮上忙。

以上是关于安卓。 TableLayout 不显示。图像视图问题的主要内容,如果未能解决你的问题,请参考以下文章

ListView 还是 TableLayout?

如何在 TableRow 中的文本视图之间添加空格?

用于显示滑动图像的 Android 布局/视图

TableLayout - 删除列之间的空间

慕课网/安卓攻城狮视频学习及练习

从相机捕获的图像被视为 ImageView 对象的问题。 - 安卓