0

我在说 MainMenuActivity 中有一个带有 LinearLayout 的 Horizo​​ntalScrollView,我用 3 个按钮填充它。让我们称之为 State1。

A         B           C

单击其中一个按钮--> 从 LinearLayout 中删除这些按钮,并将其他 3 个自定义视图添加到同一个 LinearLayout。让我们称之为 State2

E         F          G

单击任何 EFG 会启动另一个活动。为了从 state1 到 state2,我为每个 EFG 膨胀 View 并将这些视图添加到 LinearLayout。

我的问题:回到我的 MainMenu Activity 后,我希望 ScrollView 显示 EF G。由于某些其他原因它没有显示(我进入 Cocos2dx)。它显示 AB C。

当从任何活动返回到 MainMenu 时,我能够为 State2 增加视图,但视图在屏幕上不可见。LinearLayout 应该有 3 个孩子,但它们不可见。事实上整个 LinearLayout 是不可见的。

它第一次工作(从ABC到EFG)。但不是我第二次直接进入 EFG State

我的 Horizo​​ntalScrollView 看起来像这样

<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>

这就是我为 EF 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 Thread 上完成。roomArr 打印所有值并且 inScrollChildCnt = 3,这是 roomArr 的计数。

4

0 回答 0