其他分享
首页 > 其他分享> > android-Horizo​​ntalScrollView.getMeasuredWidth()返回0

android-Horizo​​ntalScrollView.getMeasuredWidth()返回0

作者:互联网

我正在以编程方式添加horizo​​ntalScrollView,但是当我尝试执行horizo​​ntalScrollView.getMeasuredWidth()时,它始终返回0.

void addCategory(String catTitle) {
    mVideos = mShows.get(catTitle);
    LinearLayout theLayout = (LinearLayout)findViewById(R.id.activitymain);
    TextView textview=(TextView)getLayoutInflater().inflate(R.layout.categorytitle,null);
    textview.setTextColor(Color.CYAN);
    textview.setTextSize(20);
    textview.setText(catTitle);

   HorizontalScrollView horizontalScroll = new HorizontalScrollView (this,null);
    LinearLayout LL = new LinearLayout(this);
    LL.setOrientation(LinearLayout.HORIZONTAL);
    LayoutParams LLParams = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
    LL.setLayoutParams(LLParams);
    HorizontalGalleryAdapter adapter = new HorizontalGalleryAdapter(this,mVideos);
    for (int i = 0; i < adapter.getCount(); i++) {
          View item = adapter.getView(i, null, null);
          LL.addView(item);
    }



    horizontalScroll.addView(LL);
    int maxScrollX = horizontalScroll.getChildAt(0).getMeasuredWidth()-horizontalScroll.getMeasuredWidth();
    AlertDialog alertDialog = new AlertDialog.Builder(this).create();
    alertDialog.setTitle("Reset...");
    String max= String.valueOf(maxScrollX);

解决方法:

好的,我看到了问题.您创建一个Horizo​​ntalScrollView,向其添加一个子项,然后立即尝试获取其测量的宽度.

你不可以做这个.您必须先将水平滚动视图添加到活动中现有的已绘制视图中,因为否则还没有设置尺寸.

想想看如何知道WRAP_CONTENT在您将其放置在视图中之前将尺寸设置为多少像素?如果将其添加到活动中的现有视图中,则该WRAP_CONTENT实际上将转换为某个高度.

看起来有点像一个循环-horizo​​ntalScroll的尺寸取决于其内容(WRAP_CONTENT),而内容的尺寸(LinearLayout的尺寸)取决于horizo​​ntalScroll的尺寸.这根本不符合逻辑.也许尝试MATCH_PARENT至少获取水平滚动视图的宽度尺寸.然后,确保在绘制视图之前不要查看尺寸.

标签:horizontalscrollview,android
来源: https://codeday.me/bug/20191122/2058780.html