android – 是否可以检查TabWidget中的特定“TAB”是否在当前视图中可见?

android – 是否可以检查TabWidget中的特定“TAB”是否在当前视图中可见?,第1张

概述我有一个带有5个标签的TabWidget.标签:“一个”,“两个”,“三个”,“四个”,“五个”. TabHost位于Horizo​​ntalScrollView中.现在,我在TabWidget的每一侧都有一个箭头(<和>),表示该方向上有更多标签(当前在视图中不可见). 现在我想要做的是,如果第一个标签不可见(在当前视图中),那么左边的箭头(<)应该是可见的,如果最后一个标签不可见(在当前视图中 我有一个带有5个标签的TabWidget.标签:“一个”,“两个”,“三个”,“四个”,“五个”. TabHost位于Horizo​​ntalScrollVIEw中.现在,我在TabWidget的每一侧都有一个箭头(<和>),表示该方向上有更多标签(当前在视图中不可见).

现在我想要做的是,如果第一个标签不可见(在当前视图中),那么左边的箭头(<)应该是可见的,如果最后一个标签不可见(在当前视图中),那么右边的箭头应该是可见的,如果两个标签都不可见(在当前视图中),则两个箭头都应该是可见的.我试过这样做:

if (horizontablscrollvIEw.getleft == 0){   arrowRight.setVisiblity(VIEw.VISIBLE)   arrowleft.setVisiblity(VIEw.INVISIBLE)}else if( horizontablscrollvIEw.getRight == 0){   arrowleft.setVisiblity(VIEw.VISIBLE)   arrowRight.setVisiblity(VIEw.INVISIBLE)}else if ( horizontablscrollvIEw.getRight == 0 && horizontablscrollvIEw.getleft == 0){    arrowRight.setVisiblity(VIEw.VISIBLE)    arrowleft.setVisiblity(VIEw.VISIBLE)}

但是这不起作用,我的两个标签在开始时都是不可见的:

我的xml看起来像这样..

<?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"    androID:background="#ffffff" >    <relativeLayout        androID:ID="@+ID/RL_header"        androID:layout_wIDth="fill_parent"        androID:layout_height="50dip"        androID:layout_marginBottom="3dip"        androID:background="@drawable/gradIEnt" >        <Imagebutton            androID:ID="@+ID/btn_Home"            androID:layout_wIDth="wrap_content"            androID:layout_height="wrap_content"            androID:layout_centerVertical="true"            androID:layout_marginleft="3dp"            androID:background="@androID:color/transparent"            androID:contentDescription="@string/description_home"            androID:onClick="onHomebuttonClick"            androID:src="@drawable/Title_home" />        <Imagebutton            androID:layout_wIDth="wrap_content"            androID:layout_height="wrap_content"            androID:layout_alignParentRight="true"            androID:layout_centerVertical="true"            androID:layout_marginRight="5dip"            androID:layout_margintop="5dip"            androID:background="@androID:color/transparent"            androID:contentDescription="@string/description_about"            androID:onClick="onClickAbout"            androID:src="@drawable/Title_about" />    </relativeLayout>    <relativeLayout        androID:ID="@+ID/FL_Tabs"        androID:layout_wIDth="fill_parent"        androID:layout_height="wrap_content"        androID:layout_below="@ID/RL_header" >    </relativeLayout>    <relativeLayout        androID:ID="@+ID/FL_Tabs"        androID:layout_wIDth="fill_parent"        androID:layout_height="wrap_content"        androID:layout_below="@ID/RL_header" >        <TabHost            xmlns:androID="http://schemas.androID.com/apk/res/androID"            androID:ID="@androID:ID/tabhost"            androID:layout_wIDth="fill_parent"            androID:layout_height="fill_parent"            androID:background="#ffffff" >                    <ImageVIEw androID:ID="@+ID/arrow_left"                        androID:layout_wIDth="wrap_content"                        androID:layout_height="wrap_content"                        androID:src="@drawable/i_button"                        androID:layout_alignParentleft="true"/>                        <relativeLayout                androID:ID="@+ID/rl_tabs"                androID:layout_wIDth="wrap_content"                androID:layout_height="wrap_content" >                    <ImageVIEw androID:ID="@+ID/arrow_left"                        androID:layout_wIDth="wrap_content"                        androID:layout_height="wrap_content"                        androID:src="@drawable/i_button"                        androID:layout_alignParentleft="true"                        androID:visibility="invisible"/>                    <ImageVIEw androID:ID="@+ID/arrow_Right"                        androID:layout_wIDth="wrap_content"                        androID:layout_height="wrap_content"                        androID:src="@drawable/i_button"                        androID:layout_alignParentRight="true"                        androID:visibility="invisible"/>                                    <horizontalscrollview                    androID:ID="@+ID/my_scrollVIEw"                    androID:layout_wIDth="fill_parent"                    androID:layout_height="wrap_content"                    androID:fillVIEwport="true"                    androID:scrollbars="none"                     androID:layout_toRightOf="@+ID/arrow_left"                    androID:layout_toleftOf="@+ID/arrow_Right">                    <TabWidget                        androID:ID="@androID:ID/tabs"                        androID:layout_wIDth="fill_parent"                        androID:layout_height="wrap_content"                        androID:tabStripEnabled="true"/>                </horizontalscrollview>            </relativeLayout>            <FrameLayout                androID:ID="@androID:ID/tabcontent"                androID:layout_wIDth="fill_parent"                androID:layout_height="wrap_content"                androID:paddingtop="65dip" >                <relativeLayout                    androID:ID="@+ID/myTabContent"                    androID:layout_wIDth="fill_parent"                    androID:layout_height="wrap_content"                    androID:layout_margintop="50dip" >                    <tableLayout                        androID:ID="@+ID/tabSubs"                        androID:layout_wIDth="match_parent"                        androID:layout_height="wrap_content"                        androID:background="#ffffff"                        androID:shrinkColumns="*"                        androID:stretchColumns="*" >                        <tableRow                            androID:layout_wIDth="fill_parent"                            androID:layout_height="wrap_content"                            androID:layout_marginBottom="20dip"                            androID:layout_margintop="20dip"                            androID:gravity="center_horizontal" >                            <button                                androID:ID="@+ID/btntestno1"                                androID:layout_weight="1"                                androID:gravity="center"                                androID:padding="20dip"                                androID:text="Test 1"                                androID:textcolor="#000000" />                            <button                                androID:ID="@+ID/btntestno2"                                androID:layout_weight="1"                                androID:gravity="center"                                androID:padding="20dip"                                androID:text="Test 2"                                androID:textcolor="#000000" />                        </tableRow>                        <tableRow                            androID:layout_wIDth="fill_parent"                            androID:layout_height="wrap_content"                            androID:layout_marginBottom="20dip"                            androID:gravity="center_horizontal" >                            <button                                androID:ID="@+ID/btntestno3"                                androID:layout_weight="1"                                androID:gravity="center"                                androID:padding="20dip"                                androID:text="Test 3"                                androID:textcolor="#000000" />                            <button                                androID:ID="@+ID/btntestno4"                                androID:layout_weight="1"                                androID:gravity="center"                                androID:padding="20dip"                                androID:text="Test 4"                                androID:textcolor="#000000" />                        </tableRow>                        <tableRow                            androID:layout_wIDth="fill_parent"                            androID:layout_height="wrap_content"                            androID:layout_marginBottom="20dip"                            androID:gravity="center_horizontal" >                            <button                                androID:ID="@+ID/btntestno5"                                androID:layout_weight="1"                                androID:gravity="center"                                androID:padding="20dip"                                androID:text="Test 5"                                androID:textcolor="#000000" />                            <button                                androID:ID="@+ID/btntestno6"                                androID:layout_weight="1"                                androID:gravity="center"                                androID:padding="20dip"                                androID:text="Test 6"                                androID:textcolor="#000000" />                        </tableRow>                    </tableLayout>                </relativeLayout>            </FrameLayout>        </TabHost>    </relativeLayout></relativeLayout>

任何帮助将不胜感激.

解决方法 一种解决方案是让你拥有Horizo​​ntalScrollVIEw类并根据滚动显示ImageVIEws(虽然我没有测试过这么多下面的代码应该工作).您的布局将如下所示:

//...           <relativeLayout                androID:ID="@+ID/rl_tabs"                androID:layout_wIDth="wrap_content"                androID:layout_height="wrap_content" >                    <ImageVIEw androID:ID="@+ID/arrow_left"                        androID:layout_wIDth="wrap_content"                        androID:layout_height="wrap_content"                        androID:src="@drawable/i_button"                        androID:layout_alignParentleft="true"                        androID:visibility="gone"/>                    <ImageVIEw androID:ID="@+ID/arrow_Right"                        androID:layout_wIDth="wrap_content"                        androID:layout_height="wrap_content"                        androID:src="@drawable/i_button"                        androID:layout_alignParentRight="true"                        />                                    <com.your.package.here.SpecialScroll                    androID:ID="@+ID/my_scrollVIEw"                    androID:layout_wIDth="fill_parent"                    androID:layout_height="wrap_content"                    androID:fillVIEwport="true"                    androID:scrollbars="none" >                    <TabWidget                        androID:ID="@androID:ID/tabs"                        androID:layout_wIDth="fill_parent"                        androID:layout_height="wrap_content"                        androID:tabStripEnabled="true"/>                </com.your.package.here.SpecialScroll>            </relativeLayout>//...

SpecialScroll类看起来像这样:

public class SpecialScroll extends horizontalscrollview {    public interface positionListener {        public voID onleftArrowrequired(boolean required);        public voID onRightArrowrequired(boolean required);        public VIEw implementScrolledVIEw();    }    private positionListener Listener;    public voID setpositionListener(positionListener Listener) {        this.Listener = Listener;    }    public SpecialScroll(Context context) {        super(context);    }    public SpecialScroll(Context context,AttributeSet attrs,int defStyle) {        super(context,attrs,defStyle);    }    public SpecialScroll(Context context,AttributeSet attrs) {        super(context,attrs);    }    @OverrIDe    protected voID onScrollChanged(int l,int t,int oldl,int oldt) {        super.onScrollChanged(l,t,oldl,oldt);        if (l == 0) {            Listener.onleftArrowrequired(false);        } else {            Listener.onleftArrowrequired(true);        }        VIEw v = Listener.implementScrolledVIEw();        Rect r = new Rect();        v.getDrawingRect(r);        if ((r.wIDth() - l) == getWIDth()) {            Listener.onRightArrowrequired(false);        } else {            Listener.onRightArrowrequired(true);        }    }}

然后在你的活动的onCreate方法中你会做:

SpecialScroll hsv = (SpecialScroll) findVIEwByID(R.ID.my_scrollVIEw);hsv.setpositionListener(this); // I made the activity implement the SpecialScroll.positionListener interface

并且活动的positionListener接口的实现是:

@OverrIDe    public voID onleftArrowrequired(boolean required) {        if (required) {            ((ImageVIEw) findVIEwByID(R.ID.arrow_left))                    .setVisibility(VIEw.VISIBLE);        } else {            ((ImageVIEw) findVIEwByID(R.ID.arrow_left))                    .setVisibility(VIEw.GONE);        }    }    @OverrIDe    public voID onRightArrowrequired(boolean required) {        if (required) {            ((ImageVIEw) findVIEwByID(R.ID.arrow_right))                    .setVisibility(VIEw.VISIBLE);        } else {            ((ImageVIEw) findVIEwByID(R.ID.arrow_right))                    .setVisibility(VIEw.GONE);        }    }    @OverrIDe    public VIEw implementScrolledVIEw() {        return findVIEwByID(androID.R.ID.tabs);    }
总结

以上是内存溢出为你收集整理的android – 是否可以检查TabWidget中的特定“TAB”是否在当前视图中可见?全部内容,希望文章能够帮你解决android – 是否可以检查TabWidget中的特定“TAB”是否在当前视图中可见?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1126610.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存