gpt4 book ai didi

Android ScrollView 只能承载一个直接 subview

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:16:31 25 4
gpt4 key购买 nike

我有一个来自图库的 onclick 监听器,它应该清除 tableview 内的所有行,然后将行/行添加到 scrollview 内的 tableview。每次单击按钮时,该 fragment 都会发生变化。

但是我得到:java.lang.IllegalStateException: ScrollView can host only an direct child.

我的 Activity 按钮监听器

            TrackerFragment tf = (TrackerFragment) getFragmentManager().findFragmentById(R.id.tracker1);
tf = TrackerFragment.newInstance(listOfList.get(id).get(position));

fragmentTransaction.add(R.id.tracker1, tf);
fragmentTransaction.commit();
t1 = true; //being used
getFragmentManager().executePendingTransactions();

跟踪器 fragment

public class TrackerFragment extends Fragment
{
private Dish dish;

public static TrackerFragment newInstance(Serializable dish)
{
TrackerFragment tf = new TrackerFragment();

Bundle args = new Bundle();
args.putSerializable("dish", dish);
tf.setArguments(args);

return tf;
}

public static TrackerFragment newInstance(Bundle bundle)
{
Dish dish = (Dish) bundle.getSerializable("dish");
return newInstance(dish);
}

@Override
public void onCreate(Bundle myBundle)
{
super.onCreate(myBundle);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View v = inflater.inflate(R.layout.tracker, container, false);

TableLayout tableLayout = (TableLayout) v.findViewById(R.id.tracker_layout);
tableLayout.removeAllViews();

if (dish != null)
{
//display others

//display subsystem stuff
for (int i = 0; i < dish.getSubsystems().size(); i++)
{
TableRow tableRow = new TableRow(v.getContext());
tableRow.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));

TextView tv = new TextView(v.getContext());
tv.setText(dish.getSubsystems().get(i).getConnFuncAddr());

tableRow.addView(tv);

tableLayout.addView(tableRow);
}
}
else
{
TableRow tableRow = new TableRow(v.getContext());
tableRow.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));

TextView tv = new TextView(v.getContext());
tv.setText("Click on image to view more data");

tableRow.addView(tv);

tableLayout.addView(tableRow);
}

return v;
}
}

ma​​in.xml

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

<!-- Trackers -->
<LinearLayout
android:layout_height="fill_parent"
android:layout_width="300dp"
android:layout_weight="1"
android:orientation="vertical">

<fragment
android:name="android.gallery.TrackerFragment"
android:id="@+id/tracker1"
android:layout_height="500dp"
android:layout_width="300dp"
android:layout_weight="1">
</fragment>

</LinearLayout>

<!-- Gallery -->
<LinearLayout
android:layout_height="fill_parent"
android:layout_width="600dp"
android:layout_weight="1"
android:orientation="vertical">

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="245dp">

<Gallery
android:id="@+id/galleryid0"
android:layout_width="fill_parent"
android:layout_height="match_parent"/>

</LinearLayout>

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="245dp">

<Gallery
android:id="@+id/galleryid1"
android:layout_width="fill_parent"
android:layout_height="match_parent"/>

</LinearLayout>

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="245dp">

<Gallery
android:id="@+id/galleryid2"
android:layout_width="fill_parent"
android:layout_height="match_parent"/>

</LinearLayout>

</LinearLayout>

</LinearLayout>

tracker.xml

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

<TableLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/tracker_layout">

</TableLayout>

</ScrollView>

有人知道怎么回事吗?我猜我正在向 ScrollView 而不是表格 View 添加表格行,但是,我没有看到我的代码哪里做错了。

最佳答案

事实上,你不能有这样的东西:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
android:id="@+id/widget27"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffffff"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<TableLayout
android:id="@+id/layoutOption"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffffff"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
>
<ImageView
android:id="@+id/logoImmoweb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/logoimmoweb"
android:layout_gravity="top"
/>
...
</TableLayout>
</ScrollView>

但是如果您在表外有一个额外的元素,它会崩溃并出现 java.lang.IllegalStateException: ScrollView can host only one direct child

例子

<ScrollView
android:id="@+id/widget27"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffffff"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<ImageView
android:id="@+id/logoImmoweb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/logoimmoweb"
android:layout_gravity="top"
/>
<TableLayout
android:id="@+id/layoutOption"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffffff"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
>
...
</TableLayout>
</ScrollView>

希望这对您有所帮助。

关于Android ScrollView 只能承载一个直接 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6528612/

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