修复了水平滚动视图两侧的左右箭头按钮

时间:2012-03-21 15:16:04

标签: android horizontalscrollview

我的应用中有一个水平滚动视图。在滚动视图的两侧,我希望保留一个左箭头和右箭头按钮(ibLeft& ibRight下面),它应该始终可见,并且不应该在任何时间点隐藏在水平滚动视图图像后面。

我面临的问题是:

  1. 不知何故,水平滚动视图与两个按钮重叠。

  2. 此外,当我为按钮设置onclick监听器时,我没有看到任何事情发生。当我们有一个水平滚动视图时,我在某处读到这是一个问题。

  3. 请帮助。

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    
    
        <RelativeLayout
            android:id="@+id/RelBt"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true">
    
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:text="NEWS" />
    
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:text="LIVE T.V." />
    
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:text="YOUTH" />
        </RelativeLayout>
    
        <TextView
            android:id="@+id/tvtmp"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:text="Video will come up here" />
    
        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_above="@+id/RelBt"
            android:layout_below="@+id/tvtmp" >
    
            <ImageButton
                android:id="@+id/ibLeft"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_centerVertical="true"
                android:src="@drawable/ic_launcher" />
    
            <ImageButton
                android:id="@+id/ibRight"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_centerVertical="true"
                android:src="@drawable/ic_launcher" />
    
            <HorizontalScrollView
                android:id="@+id/hsv"
                android:layout_width="wrap_content"
                android:fadingEdgeLength="100dp"
                android:layout_height="wrap_content" >
    
                <RelativeLayout
                    android:id="@+id/RelativeLayout1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" >
    
                    <ImageView..../>
    <ImageView..../>
    <ImageView..../>
    <ImageView..../>
    <ImageView..../>
    
                                </RelativeLayout>
            </HorizontalScrollView>
        </RelativeLayout>
    
    </RelativeLayout>
    

    java文件是

    public class Main extends Activity implements OnClickListener{
    
        HorizontalScrollView hSV;
        ImageButton ibLeft,ibRight;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
    
            ibLeft=(ImageButton) findViewById(R.id.ibLeft);
            ibLeft.setOnClickListener(this);
    
            ibRight=(ImageButton) findViewById(R.id.ibRight);
            ibRight.setOnClickListener(this);
    
            hSV=(HorizontalScrollView) findViewById(R.id.hsv);
    
        }
    
        @Override
        public void onClick(View v) {
            if(v.getId()==R.id.ibLeft){
                Toast.makeText(Main.this, "Left", Toast.LENGTH_SHORT).show();
            }
            else if(v.getId()==R.id.ibLeft){
                Toast.makeText(Main.this, "Right", Toast.LENGTH_SHORT).show();
            }
        }
    
    }
    

1 个答案:

答案 0 :(得分:1)

将您的HorizontalScrollView相对于ImageButtons

//...
<RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/RelBt"
        android:layout_below="@+id/tvtmp" >

        <ImageButton
            android:id="@+id/ibLeft"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:src="@drawable/ic_launcher" />

        <ImageButton
            android:id="@+id/ibRight"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:src="@drawable/ic_launcher" />

        <HorizontalScrollView
            android:id="@+id/hsv"
            android:layout_width="wrap_content"
            android:fadingEdgeLength="100dp"
            android:layout_toRightOf="@id/ibLeft"
            android:layout_toLeftOf="@id/ibRight"
            android:layout_height="wrap_content" >
//...

注意按钮没有接收到HorizontalScrollView可能涵盖的点击事件,你也在onClick()的左右两个按钮设置了相同的id(左按钮)方法