我有一个带有LinearLayout的HorizontalScrollView作为一个孩子,比如MainMenuActivity,我用3个按钮填充。让我们称之为State1。
A B C
点击其中一个按钮 - >从LinearLayout中删除这些按钮,并将其他3个自定义视图添加到同一LinearLayout。让我们称之为State2
E F G
点击任何一个E F G启动另一项活动。为了从state1转到state2,我为每个E F G充气View并将这些视图添加到LinearLayout。
我的问题:在回到我的MainMenu活动之后,我希望ScrollView显示E F G.由于其他原因(我进入Cocos2dx)它没有。它显示了A B C.
当从任何活动回到MainMenu时,我能够为State2充气,但视图在屏幕上不可见。 LinearLayout有3个子节点,但它们不可见。事实上,整个LinearLayout都不可见。
它第一次工作(从A B C到E F G)。但不是我第二次直接进入E F G州
我的HorizontalScrollView看起来像这样
<HorizontalScrollView
android:id="@+id/mainHZScrollView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:clipChildren="true"
android:scrollbars="none"
android:background="@android:color/black">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:isScrollContainer="true"
android:layout_gravity="center_vertical"
android:id="@+id/scrollInnerLayout"
android:background="@android:color/white">
</LinearLayout>
</HorizontalScrollView>
这就是我为E F G填写ScrollView的方法。
private void fillScrollViewWithRoomList(ArrayList<HashMap<String, String>> roomArr){
Log.d("MainAct", "fillScrollViewWithRoomList: "+roomArr.toString());
HorizontalScrollView mainMenuScroll = (HorizontalScrollView) findViewById(R.id.mainHZScrollView);
LinearLayout scrollInnerLayout = (LinearLayout) mainMenuScroll.findViewById(R.id.scrollInnerLayout);
//Remove Existing Contents
scrollInnerLayout.removeAllViews();
for (int i = 0; i < roomArr.size(); i++) {
Log.d("MainAct", "fillScrollViewWithRoomList For Loop ");
View roomView = View.inflate(this, R.layout.room_view, null);
/*
* Get contents from ArrayList and
* Fill roomView TextViews Here
*/
scrollInnerLayout.addView(roomView);
}
int inScrollChildCnt = scrollInnerLayout.getChildCount();
Log.d("MainAct", "inScrollChildCnt "+ inScrollChildCnt);
Log.d("MainAct", "fillScrollViewWithRoomList Complete");
}
在onResume()中,我检查在ScrollView中显示的内容。 roomArr的数据来自服务器。请求从onResume()发送。我在处理程序和显示中解析它。所以一切都在UI线程上完成。 roomArr打印所有值和inScrollChildCnt = 3,这是roomArr的计数。