【问题标题】:Inflating a LinearLayout dynamically - Android动态膨胀 LinearLayout - Android
【发布时间】:2023-04-11 05:08:01
【问题描述】:

我正在尝试直接在活动的onCreate() 方法中扩充LinarLayout 中的视图列表。但是,我在代码的某个地方遇到了问题但我真的看不到它,我这两天都在转这个问题,我要疯了!

问题是当我运行activity时,线性布局完全是空的,只有标题。

这里是代码的重要部分,KeyItems 活动:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.keyitems_layout);
    initializer();
    ll = (LinearLayout) findViewById(R.id.ll);
    LayoutInflater inflater = LayoutInflater.from(this);
    for (int i = 0; i < list.size(); i++) {
        View view  = inflater.inflate(R.layout.keyitem_temp, ll, false); 
        final TextView ind = (TextView) view.findViewById(R.id.ind);
        final TextView item = (TextView) view.findViewById(R.id.item);
        ind.setText(list.get(i).get("id"));
        item.setText(list.get(i).get("item"));
        ll.addView(view);
    }
}

这里是keyitems_layout

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

    <LinearLayout android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:background="@color/black">

        <TextView android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="8dp" />

        <TextView android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:text="@string/key_items"
            android:textSize="36sp"
            android:textColor="@color/white" />

        <TextView android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="4dp" />

        <LinearLayout android:id="@+id/ll"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginLeft="32dp"
            android:layout_marginRight="32dp"
            android:orientation="vertical"
            android:background="@color/white" >

        </LinearLayout>

        <TextView android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColor="@color/white"
            android:text="caca"
            android:padding="32dp" />

        </LinearLayout>

</ScrollView>

最后,我的keyitem_temp.xml 正在膨胀:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/black"
    android:padding="4dp"
    android:orientation="horizontal" >

    <TextView android:id="@+id/ind"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="center"
        android:gravity="center"
        android:textSize="18sp"
        android:textColor="@color/blue" />

    <TextView android:id="@+id/item"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="match_parent"
        android:layout_gravity="center"
        android:gravity="center"
        android:textSize="18sp"
        android:textColor="@color/white"/>

</LinearLayout>

我有一个名为 ItemsActivity 的其他活动,它是相同的代码,但有一些细微差别,并且可以正常工作。有什么建议吗?提前致谢。

【问题讨论】:

  • 您必须为此使用ListView,而不是自己将视图添加到LinearLayout,这是ListView 的目的。
  • 我以前有一个列表视图,但由于实际原因我改变了,但是它适用于我的其他活动,为什么它不能在这个活动中工作?
  • 您确定要将@+id/ll 的高度设为“match_parent”吗?
  • 您确定list.get(i).get("id") 包含值吗?另外,您是否尝试过在@+id/ind 上使用layout_weight 属性?
  • 完全确定,是的,我比我已经尝试过的事情...

标签: java android xml android-layout layout-inflater


【解决方案1】:

尝试将 wrap_content 用于除初始 ScrollView 之外的所有高度:

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

    <LinearLayout android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:background="@color/black">

        <TextView android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="8dp" />

        <TextView android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:text="@string/key_items"
            android:textSize="36sp"
            android:textColor="@color/white" />

        <TextView android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="4dp" />

        <LinearLayout android:id="@+id/ll"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="32dp"
            android:layout_marginRight="32dp"
            android:orientation="vertical"
            android:background="@color/white" >

        </LinearLayout>

        <TextView android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColor="@color/white"
            android:text="caca"
            android:padding="32dp" />

        </LinearLayout>

</ScrollView>

和:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/black"
    android:padding="4dp"
    android:orientation="horizontal" >

    <TextView android:id="@+id/ind"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center"
        android:textSize="18sp"
        android:textColor="@color/blue" />

    <TextView android:id="@+id/item"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center"
        android:textSize="18sp"
        android:textColor="@color/white"/>

</LinearLayout>

【讨论】:

  • 我不知道它是什么...你能给我解释一下吗?
  • 我认为这不会解决我的问题。我真的认为某处可能有一个错误,但我无法找到它。
猜你喜欢
  • 2012-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多