我有两个水平滚动视图。如何一次显示一个并在按钮单击时切换它们?

时间:2015-03-15 13:14:19

标签: java android visibility horizontal-scrolling

在我的Android应用程序上,我有两个水平滚动视图作为停靠点。如何点击按钮1,如果单击停靠栏1,如果单击按钮2,则会显示停靠栏2?由于他们需要停靠,我希望他们都能在同一个位置显示。

这是我的代码:

<HorizontalScrollView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="50dp">

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Button1" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Button2" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Button3" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Button4" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Button5" />
        </LinearLayout>

    </HorizontalScrollView>

    <HorizontalScrollView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="50dp">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button1" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button2" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button3" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button4" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button5" />
    </LinearLayout>

                <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="dockButton1" />

               <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="dockButton2" />

按钮代码:

dock1button.setOnClickListener(new View.OnClickListener() {

   @Override
   public void onClick(View view) {

   }
});

dock2button.setOnClickListener(new View.OnClickListener() {

   @Override
   public void onClick(View view) {

   }
});

3 个答案:

答案 0 :(得分:1)

第1步: 在Horizo​​ntalScrollView中添加id 例如:android:id="@+id/hScrollView1"android:id="@+id/hScrollView2"

第2步: 将Horizo​​ntalScrollView放在父LinearLayout中,如下所示:

    <LinearLayout>
    <HorizontalScrollView
     android:id="@+id/hScrollView1">
    .
    .         
    </HorizontalScrollView>
    <HorizontalScrollView
     android:id="@+id/hScrollView2">
    .
    .
    </HorizontalScrollView>
    </LinearLayout>

第3步: 在您的按钮中单击以切换可见性: 在onClick上只需使用..

hScrlView1.setVisibility(View.GONE);
hScrlView2.setVisibility(View.VISIBLE);

hScrlView1.setVisibility(View.VISIBLE);
hScrlView2.setVisibility(View.GONE);

其中hScrlView1和hScrlView2是您要显示的ScrollView。

答案 1 :(得分:1)

将两个水平列表视图放在相对布局中,并将其中一个的可见性设置为不可见。

<?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="match_parent"
android:orientation="vertical" >

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <HorizontalScrollView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="50dp" >

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Button1" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Button2" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Button3" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Button4" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Button5" />
        </LinearLayout>
    </HorizontalScrollView>

    <HorizontalScrollView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="50dp"
        android:visibility="invisible" >

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Button1" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Button2" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Button3" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Button4" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Button5" />
        </LinearLayout>
    </HorizontalScrollView>

</RelativeLayout>


        <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="dockButton1" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="dockButton2" />

然后更改按钮中的可见性&#39;代码:

按钮代码:

dock1button.setOnClickListener(new View.OnClickListener() {

  @Override
  public void onClick(View view) {
     horizontalList2.setVisibilty(View.INVISIBLE);
     horizontalList1.setVisibilty(View.VISIBLE);
  }
});

dock2button.setOnClickListener(new View.OnClickListener() { 
 @Override
 public void onClick(View view) { 
    horizontalList1.setVisibilty(View.INVISIBLE);
    horizontalList2.setVisibilty(View.VISIBLE);
 }
 });

答案 2 :(得分:1)

仅使用包含两个滚动视图的FrameLayout,您会感觉更好。它比使用LinearLayout甚至更差RelativeLayout更具性能。

做这样的事情(原理图代码,省略了一些xml attrs)

<FrameLayout>
  <HorizontalScrollView
    android:id="@+id/view1"/>

  <HorizontalScrollView
    android:id="@+id/view2"
    android:visibility="gone"
  />
</FrameLayout>

然后在你的onClick处理程序中执行类似

的操作
view1.setVisibility(View.VISIBLE)
view2.setVisibility(View.GONE)

反之亦然(取决于按下的按钮)