第一 在使用XScrollView布局是,无法在该布局.xml文件,放置内容布局控件,假如放置了会报错

<com.markmao.pulltorefresh.widget.XScrollViewandroid:id="@+id/scroll_view"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@id/page_top"android:fillViewport="true"android:scrollbars="none"></com.markmao.pulltorefresh.widget.XScrollView>

XScrollView,通过看下面的代码你会发现该控件在初始化时已经去动态添加了一个子控件,假如你再去放置内容布局肯定会报错,因为android针对ScrollView的默认设置是只允许包含唯一子空间

publicclassXScrollViewextendsScrollViewimplementsOnScrollListener{privateLinearLayoutmLayout;privateLinearLayoutmContentLayout;publicXScrollView(Contextcontext){super(context);initWithContext(context);}publicXScrollView(Contextcontext,AttributeSetattrs){super(context,attrs);initWithContext(context);}publicXScrollView(Contextcontext,AttributeSetattrs,intdefStyle){super(context,attrs,defStyle);initWithContext(context);}privatevoidinitWithContext(Contextcontext){mLayout=(LinearLayout)View.inflate(context,R.layout.vw_xscrollview_layout,null);mContentLayout=(LinearLayout)mLayout.findViewById(R.id.content_layout);this.addView(mLayout);}

R.layout.vw_xscrollview_layout 该布局文件的内部,头部与顶部的咱们先不用管,就看中间的,ID值为 content_layout,默认我们的自定义布局是放置嵌套在其中的

<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><LinearLayoutandroid:id="@+id/header_layout"android:layout_gravity="center_horizontal|top"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"/><LinearLayoutandroid:id="@+id/content_layout"android:layout_gravity="center"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"/><LinearLayoutandroid:id="@+id/footer_layout"android:layout_gravity="center_horizontal|bottom"android:layout_width="match_parent"android:layout_height="wrap_content"android:tag="ttttt"android:orientation="vertical"/></LinearLayout>

publicvoidsetContentView(ViewGroupcontent){if(mLayout==null)return;if(mContentLayout==null)mContentLayout=(LinearLayout)mLayout.findViewById(R.id.content_layout);if(mContentLayout.getChildCount()>0)mContentLayout.removeAllViews();mContentLayout.addView(content);}publicvoidsetView(Viewcontent){if(mLayout==null)return;if(mContentLayout==null)mContentLayout=(LinearLayout)mLayout.findViewById(R.id.content_layout);mContentLayout.addView(content);}

外部引入 ,设置内容的函数有两个,setContentView,setView

Viewcontent=LayoutInflater.from(this).inflate(R.layout.vw_scroll_view_content,null);scrollview.setContentView()content;

下面的布局文件还是用一个使用XScrollView的布局文件,内容布局也放置在该文件中,但是跟XScrollView就不是父子的关系,而是同级的,ID xcollview_content,就是内容布局,接下来就看代码的

<?xmlversion="1.0"encoding="utf-8"?><RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/test_parent"android:layout_width="match_parent"android:layout_height="match_parent"><com.markmao.pulltorefresh.widget.XScrollViewandroid:id="@+id/scroll_view"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@id/page_top"android:fillViewport="true"android:scrollbars="none"></com.markmao.pulltorefresh.widget.XScrollView><LinearLayoutandroid:id="@+id/xcollview_content"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@id/scroll_view"android:background="@color/transparent"android:orientation="vertical"><ListViewandroid:id="@+id/content_list"android:layout_width="match_parent"android:layout_height="match_parent"android:cacheColorHint="#00000000"android:scrollbars="none"/></LinearLayout></RelativeLayout>

代码变动,XScrollView中新增函数 ,需要注意的一个空间它只允许有一个父控件,到此步就结束了第一个问题

publicvoidsetDView(Viewcontent){if(mLayout==null)return;if(mContentLayout==null)mContentLayout=(LinearLayout)mLayout.findViewById(R.id.content_layout);ViewParentparent=this.getParent();if(parentinstanceofRelativeLayout){RelativeLayoutr_parent=(RelativeLayout)parent;r_parent.removeView(content);}if(parentinstanceofLinearLayout){LinearLayoutl_parent=(LinearLayout)parent;l_parent.removeView(content);}mContentLayout.addView(content);}


以上!另外对APP进行全方位的检测,我都会用这个:www.ineice.com


更多相关文章

  1. android camera 布局分析
  2. Android 广播获取短信内容
  3. 悬浮顶层控件不受ScrollView影响
  4. 关于设置线性布局及其他布局的宽高
  5. Android Studio常见布局报错及解决方案
  6. 2011.08.26——— android ListView之多个item布局
  7. 安卓开发10:常用控件-常用表单级别控件

随机推荐

  1. 苹果二手手机换购计划很快支持 Android(
  2. Android通信模块(单线程,多线程通信方式,Han
  3. Android MapView简单使用
  4. Xamarin Mono 环境搭建(使用Visual Studi
  5. Android TextView加中划线/下划线
  6. Android studio中使用xUtils报错
  7. android开发【二】(基于android studio3.2
  8. 史上最全!最经典!最无私的Android资料(书籍+
  9. Android 压力传感器获取当前压强
  10. Android构建工具Gradle知识2