当前位置: 首页 > 知识库问答 >
问题:

如何在滚动视图寻呼机上保持相同xml的不同线性布局的可见性

秦楚
2023-03-14

我正在使用浏览器。我为寻呼机适配器制作了一个XML(我有4页寻呼机),在这个XML中,我只使用了多个线性布局,并将它们的可见性设置为消失。默认情况下,第一个线性布局的可见性是打开的,所以它可以很容易地设置为页面的第一页。现在,我正在尝试的是,当我滚动页面时,第一个线性布局的可见性应该消失,第二个线性布局的可见性应该打开(相同的XML ),并设置为页面,等等。

这是我的xml(适配器)

<LinearLayout
    android:id="@+id/sub_l3"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="@dimen/_10sdp"
    android:background="#f5f5f5"
    android:orientation="vertical"
    android:visibility="gone">

    <TextView
        android:id="@+id/u_photos"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/_15sdp"
        android:fontFamily="serif"
        android:text="Upload Photos \n (Ads with photos sell faster)"
        android:textColor="@color/black"
        android:textSize="@dimen/_12sdp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="@dimen/_10sdp"
        android:background="#f5f5f5"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/image_upload_1"
            android:layout_width="@dimen/_100sdp"
            android:layout_height="@dimen/_100sdp"
            android:src="@color/colorPrimaryDark" />


        <ImageView
            android:id="@+id/image_upload_2"
            android:layout_width="@dimen/_100sdp"
            android:layout_height="@dimen/_100sdp"
            android:layout_marginLeft="@dimen/_70sdp"
            android:src="@color/colorPrimaryDark" />
    </LinearLayout>


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="@dimen/_10sdp"
        android:background="#f5f5f5"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/image_upload_3"
            android:layout_width="@dimen/_100sdp"
            android:layout_height="@dimen/_100sdp"
            android:src="@color/colorPrimaryDark" />


        <ImageView
            android:id="@+id/image_upload_4"
            android:layout_width="@dimen/_100sdp"
            android:layout_height="@dimen/_100sdp"
            android:layout_marginLeft="@dimen/_70sdp"
            android:src="@color/colorPrimaryDark" />
    </LinearLayout>

</LinearLayout>

<LinearLayout
    android:id="@+id/sub_l1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="@dimen/_10sdp"
    android:background="#f5f5f5"
    android:orientation="vertical"
   >

    <TextView
        android:id="@+id/ad_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fontFamily="serif"
        android:text="Ad Title"
        android:textColor="@color/black"
        android:textSize="@dimen/_12sdp" />

    <EditText
        android:id="@+id/ed_ad_title"
        android:layout_width="match_parent"
        android:layout_height="@dimen/_30sdp"
        android:layout_marginLeft="@dimen/_5sdp"
        android:layout_marginRight="@dimen/_5sdp"
        android:layout_marginTop="@dimen/_10sdp"
        android:background="@drawable/form_bg"
        android:ems="10"
        android:fontFamily="serif"
        android:hint="Ad Title"
        android:inputType="textPersonName"
        android:padding="@dimen/_3sdp"
        android:textColor="@color/black"
        android:textSize="@dimen/_12sdp" />

    <TextView
        android:id="@+id/category"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/_15sdp"
        android:fontFamily="serif"
        android:text="Category"
        android:textColor="@color/black"
        android:textSize="@dimen/_12sdp" />

    <EditText
        android:id="@+id/ed_category"
        android:layout_width="match_parent"
        android:layout_height="@dimen/_30sdp"
        android:layout_marginLeft="@dimen/_5sdp"
        android:layout_marginRight="@dimen/_5sdp"
        android:layout_marginTop="@dimen/_10sdp"
        android:background="@drawable/form_bg"
        android:ems="10"
        android:fontFamily="serif"
        android:hint="Category"
        android:inputType="textPersonName"
        android:padding="@dimen/_3sdp"
        android:textColor="@color/black"
        android:textSize="@dimen/_12sdp" />
</LinearLayout>


<LinearLayout
    android:id="@+id/sub_l2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="@dimen/_10sdp"
    android:background="#f5f5f5"
    android:orientation="vertical"
    android:visibility="gone">

    <TextView
        android:id="@+id/description"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/_15sdp"
        android:fontFamily="serif"
        android:text="Ad Description"
        android:textColor="@color/black"
        android:textSize="@dimen/_12sdp" />

    <EditText
        android:id="@+id/ed_description"
        android:layout_width="match_parent"
        android:layout_height="@dimen/_30sdp"
        android:layout_marginLeft="@dimen/_5sdp"
        android:layout_marginRight="@dimen/_5sdp"
        android:layout_marginTop="@dimen/_10sdp"
        android:background="@drawable/form_bg"
        android:ems="10"
        android:fontFamily="serif"
        android:hint="Ad Description"
        android:inputType="textPersonName"
        android:padding="@dimen/_3sdp"
        android:textColor="@color/black"
        android:textSize="@dimen/_12sdp" />
</LinearLayout>

<LinearLayout
    android:id="@+id/sub_l4"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="@dimen/_10sdp"
    android:background="#f5f5f5"
    android:orientation="vertical"
    android:visibility="gone">

    <TextView
        android:id="@+id/user_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fontFamily="serif"
        android:text="Name"
        android:textColor="@color/black"
        android:textSize="@dimen/_12sdp" />

    <EditText
        android:id="@+id/ed_user_name"
        android:layout_width="match_parent"
        android:layout_height="@dimen/_30sdp"
        android:layout_marginLeft="@dimen/_5sdp"
        android:layout_marginRight="@dimen/_5sdp"
        android:layout_marginTop="@dimen/_10sdp"
        android:background="@drawable/form_bg"
        android:ems="10"
        android:fontFamily="serif"
        android:hint="Name"
        android:inputType="textPersonName"
        android:padding="@dimen/_3sdp"
        android:textColor="@color/black"
        android:textSize="@dimen/_12sdp"/>

    <TextView
        android:id="@+id/user_num"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/_15sdp"
        android:fontFamily="serif"
        android:text="Phone number"
        android:textColor="@color/black"
        android:textSize="@dimen/_12sdp" />

    <EditText
        android:id="@+id/ed_user_num"
        android:layout_width="match_parent"
        android:layout_height="@dimen/_30sdp"
        android:layout_marginLeft="@dimen/_5sdp"
        android:layout_marginRight="@dimen/_5sdp"
        android:layout_marginTop="@dimen/_10sdp"
        android:background="@drawable/form_bg"
        android:ems="10"
        android:fontFamily="serif"
        android:hint="Phone number"
        android:inputType="number"
        android:padding="@dimen/_3sdp"
        android:textColor="@color/black"
        android:textSize="@dimen/_12sdp"/>

    <TextView
        android:id="@+id/user_city"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/_15sdp"
        android:fontFamily="serif"
        android:text="Enter a city"
        android:textColor="@color/black"
        android:textSize="@dimen/_12sdp"/>

    <EditText
        android:id="@+id/ed_user_city"
        android:layout_width="match_parent"
        android:layout_height="@dimen/_30sdp"
        android:layout_marginLeft="@dimen/_5sdp"
        android:layout_marginRight="@dimen/_5sdp"
        android:layout_marginTop="@dimen/_10sdp"
        android:background="@drawable/form_bg"
        android:ems="10"
        android:fontFamily="serif"
        android:hint="Enter a city"
        android:inputType="number"
        android:padding="@dimen/_3sdp"
        android:textColor="@color/black"
        android:textSize="@dimen/_12sdp" />


    <Button
        android:id="@+id/submit_add_btn"
        android:layout_width="@dimen/_130sdp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="@dimen/_17sdp"
        android:background="@color/green"
        android:gravity="center"
        android:text="Submit"
        android:textAllCaps="false"
        android:textColor="@color/white" />
</LinearLayout>

这是我的< code>setOnPageChangeListener(..)//这里sub_l1、sub_l2、sub_l3、sub_l4是线性布局//

form_pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            pages = position;
            if(pages==0){
                sub_l1.setVisibility(View.VISIBLE);
            }else
            if (pages == 1) {
                sub_l1.setVisibility(View.GONE);
                sub_l2.setVisibility(View.VISIBLE);
            }else
            if (pages == 2) {
                sub_l2.setVisibility(View.GONE);
                sub_l1.setVisibility(View.GONE);
                sub_l3.setVisibility(View.VISIBLE);
            }else
            if(pages==3){
                sub_l2.setVisibility(View.GONE);
                sub_l1.setVisibility(View.GONE);
                sub_l3.setVisibility(View.GONE);
                sub_l4.setVisibility(View.VISIBLE);
            }

        }

        @Override
        public void onPageSelected(int position) {
            Submit_add.page = position;
            switch (position) {
                case 0:
                    Submit_add.radioGroup.check(R.id.radioButton);
                    break;
                case 1:
                    Submit_add.radioGroup.check(R.id.radioButton2);
                    break;
                case 2:
                    Submit_add.radioGroup.check(R.id.radioButton3);
                    break;
                case 3:
                    Submit_add.radioGroup.check(R.id.radioButton4);
                    break;
            }
        }

        @Override
        public void onPageScrollStateChanged(int state) {
        }
    });

我已经浪费了我的1天在这请帮助提前感谢。

共有2个答案

董庆
2023-03-14

试试这个:

@Override
public void onPageSelected(int position) {
Submit_add.page = position;
switch (position) {
    case 0:
        sub_l1.setVisibility(View.VISIBLE);
        sub_l2.setVisibility(View.GONE);
        sub_l3.setVisibility(View.GONE);
        sub_l4.setVisibility(View.GONE);
        Submit_add.radioGroup.check(R.id.radioButton);
        break;
    case 1:
        sub_l1.setVisibility(View.GONE);
        sub_l2.setVisibility(View.VISIBLE);
        sub_l3.setVisibility(View.GONE);
        sub_l4.setVisibility(View.GONE);
        Submit_add.radioGroup.check(R.id.radioButton2);
        break;
    case 2:
        sub_l1.setVisibility(View.GONE);
        sub_l2.setVisibility(View.GONE);
        sub_l3.setVisibility(View.VISIBLE);
        sub_l4.setVisibility(View.GONE);
        Submit_add.radioGroup.check(R.id.radioButton3);
        break;
    case 3:
        sub_l2.setVisibility(View.GONE);
        sub_l1.setVisibility(View.GONE);
        sub_l3.setVisibility(View.GONE);
        sub_l4.setVisibility(View.VISIBLE);
        Submit_add.radioGroup.check(R.id.radioButton4);
        break;
    }
}

解释:据我所知,问题是在回滚时。例如,如果我们滚动到第三页,那么第一个和第二个布局将消失,第三个布局将可见,这就是我们想要的。但是如果我们滚动回第二页,那么第一个布局将消失,第二个布局将可见,但第三个布局也将可见,因为我们从不隐藏它。(第四个布局总是消失,因为我们从未滚动到第四页)。

赫连昕
2023-03-14
 ViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener()
 {

    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

    }

    @Override
    public void onPageSelected(int position) {
    sub[position].setVisibility(View.VISIBLE);

    }

    @Override
    public void onPageScrollStateChanged(int state) {

    }
});
 类似资料:
  • 是否有任何方法可以使用android: fillViewport="true"和一个子LinearLayout填充所有视图,当LinearLayout的内容不够高时? 到目前为止,在ScrollView中的LinearLayout中,我们必须使用Android:layout _ height = " wrap _ content "。我们可以添加一些东西来填充所有的滚动视图吗?

  • 我有一个layout.xml,它有可见和不可见/gone组件。我想当去可见组件变得可见,然后布局应该成为可滚动的。 在下面的XML中,我希望第二个相对布局是可滚动的,当它消失的可见组件变得可见时。 Layout.XML 请帮助我实现。

  • 我正在尝试实现类似于Google Play Music的“立即收听”布局。我在网上找到的每一个例子都是一个简单的。我正在努力实现更复杂的目标。差不多 整个布局(减去工具栏)是否可以是一个包含两个或多个RecyclerView的?差不多 最终,我想要实现的是一个如下的布局,并保持良好的性能。

  • 关于ScrollView的常见问题似乎是如何使用fillViewport让ScrollView延伸到整个屏幕。我的问题与此类似,但情况正好相反:) 我有一个包含多个元素的LinearLayout。除了一个元素之外,所有元素都有一个固定的高度,特别的是一个ImageView,它应该拉伸以填充剩余的空间。这很好:) 现在我想把LinearLayout放到一个ScrollView中,因为我的一些元素应该

  • 我正在尝试使用PagerAdapter显示来自可绘制视图寻呼机的图像。为此,我编写了以下代码-- //调用PagerAdapter 下面是我的适配器类-- 下面是我的对话框 xml-- 下面是 ViewPager Item xml-- //下面是解释当前如何显示空的ViewPager的屏幕截图-- 当我调试应用程序时,一切似乎都很好,但不知道为什么图像没有显示在ViewPager中。请帮忙..

  • 我有一个布局,即MotionLayout,它必须为我定义了motionscene约束集开始和结束的FrameLayouts。并且它们是正确的动画。 然后,在这个动画框架布局下,我添加了两个文本视图,在单击时,我尝试隐藏一个,显示另一个,但两个都保持可见 重写有趣的onViewCreated(View:View,SavedInstanceState:Bundle?){super.onviewcrea