android-HorizontalScrollView.getMeasuredWidth()返回0
作者:互联网
我正在以编程方式添加horizontalScrollView,但是当我尝试执行horizontalScrollView.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);
解决方法:
好的,我看到了问题.您创建一个HorizontalScrollView,向其添加一个子项,然后立即尝试获取其测量的宽度.
你不可以做这个.您必须先将水平滚动视图添加到活动中现有的已绘制视图中,因为否则还没有设置尺寸.
想想看如何知道WRAP_CONTENT在您将其放置在视图中之前将尺寸设置为多少像素?如果将其添加到活动中的现有视图中,则该WRAP_CONTENT实际上将转换为某个高度.
看起来有点像一个循环-horizontalScroll的尺寸取决于其内容(WRAP_CONTENT),而内容的尺寸(LinearLayout的尺寸)取决于horizontalScroll的尺寸.这根本不符合逻辑.也许尝试MATCH_PARENT至少获取水平滚动视图的宽度尺寸.然后,确保在绘制视图之前不要查看尺寸.
标签:horizontalscrollview,android 来源: https://codeday.me/bug/20191122/2058780.html