gpt4 book ai didi

android - 可滚动的 PagerAdapter

转载 作者:行者123 更新时间:2023-11-29 18:51:32 25 4
gpt4 key购买 nike

我做了一个 PagerAdapter,它工作得很好,但是当我 Handlebars 机水平放置时,很多像 TextView 这样的东西是不可见的,因为它们在“下方”手机屏幕。我知道我可以放一个 ScrollView,但是这个选项会产生很多错误。

除了 ScrollView 之外还有其他选项吗?或者错误是什么意思?

这是我使用 LinearLayout 的代码,没有任何错误,但 PagerAdapter 不可滚动。

Java代码:

public class SlideAdapter_info extends PagerAdapter {
Context context;
LayoutInflater inflater;

public SlideAdapter_info(Context context){
this.context = context;
}

@Override
public int getCount() {
return 1;
}

@Override
public boolean isViewFromObject(View view, Object object) {
return (view==(LinearLayout)object);
}

@Override
public void destroyItem(ViewGroup container, int position, Object object{
container.removeView((LinearLayout)object);
}

@NonNull
@Override
public Object instantiateItem(ViewGroup container, int position) {
inflater = (LayoutInflater)
context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.slide_info, container, false);
//other code to set the textviews and the imageview
container.addView(view);
return view;
}
}

xml代码:

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

<TextView /> ....

<!-- This allows me to have a circle shaped image-->
<de.hdodenhof.circleimageview.CircleImageView
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/slideimg"
android:layout_width="200dp"
android:layout_height="200dp"
android:paddingTop="10dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
app:civ_border_color="@color/black"
app:civ_border_width="3dp" />

<TextView /> ....

</LinearLayout>

这是结果:(水平)

这是结果:(垂直)

如果我放置了 ScrollView 而不是 LinearLayoutAndroid Studio 会给我这个错误:

java.lang.IllegalStateException: ScrollView can host only an direct child

在 esame.progetto.xhondar.github.com.info.SlideAdapter_info.instantiateItem(SlideAdapter_info.java:87)

这是一行:View view = inflater.inflate(R.layout.slide_info, container, false);

最佳答案

java.lang.IllegalStateException: ScrollView can host only one direct child 准确地告诉你你的问题是什么。只需将您的 LinearLayout 转换为 ScrollView,您就有了多个 child 。如果您希望当前布局在 ViewPager 中可滚动,则需要在布局 xml 文件中使用 ScrollView 包装您的 LinearLayout

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/slidelinear_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<TextView /> ....
<de.hdodenhof.circleimageview.CircleImageView
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/slideimg"
android:layout_width="200dp"
android:layout_height="200dp"
android:paddingTop="10dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
app:civ_border_color="@color/black"
app:civ_border_width="3dp" />
<TextView /> ....
</LinearLayout>
</ScrollView>

关于android - 可滚动的 PagerAdapter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50891661/

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