如何以编程方式在运行时增加线性布局的大小?

时间:2015-09-21 17:10:14

标签: android android-layout android-linearlayout

我正在使用Android Studio。我的项目涉及通过BLE接收一些数据并在线性布局上将其显示在屏幕上。

我添加视图的主要活动代码:

dataLayout.addView(view, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);

功能定义为:

addView(dataEdit, new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 1));

在我的xml文件中,所需部分如下所示:

<LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:stretchColumns="1"
    android:id="@+id/dataLayout"
    android:fillViewport="true">
</LinearLayout>

编辑: 整个xml文件如下所示:

<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scrollView">

  <LinearLayout
      android:orientation="vertical"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:paddingLeft="@dimen/activity_horizontal_margin"
      android:paddingRight="@dimen/activity_horizontal_margin"
      android:paddingTop="@dimen/activity_vertical_margin"
      android:paddingBottom="@dimen/activity_vertical_margin"
      android:focusable="true"
      android:focusableInTouchMode="true"
      android:baselineAligned="true">

    <TextView
        style="?android:attr/listSeparatorTextViewStyle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textView2"
        android:text="Find Device"
        android:layout_marginTop="5dip" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/scanStatus" />

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Scan"
        android:id="@+id/scan"
        android:layout_gravity="center_horizontal"
        android:enabled="false" />

    <TextView
        style="?android:attr/listSeparatorTextViewStyle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textView4"
        android:layout_marginTop="5dip" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/deviceInfo" />

    <TextView
        style="?android:attr/listSeparatorTextViewStyle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textView3"
        android:text="Connect Device"
        android:layout_marginTop="5dip" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/connectionStatus" />

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Connect"
        android:id="@+id/connect"
        android:layout_gravity="center_horizontal"
        android:enabled="false" />

    </LinearLayout>

    <TextView
        style="?android:attr/listSeparatorTextViewStyle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textView7"
        android:text="Receive"
        android:textColor="#0B0101"
        android:layout_marginTop="5dip" />

    <Button
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:text="Clear Data"
        android:textColor="#FFFCFC"
        android:id="@+id/clearData"
        android:layout_gravity="center_horizontal"
        android:singleLine="false" />

    <TextView
        style="?android:attr/listSeparatorTextViewStyle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textView9"
        android:text="Graphs"
        android:layout_marginTop="5dip" />

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Plot"
        android:id="@+id/Plot"
        android:layout_weight="1"
        android:layout_marginTop="2dip"
        android:singleLine="false"/>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

    </LinearLayout>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Distance:"
        android:textColor="#0B0101"
        android:id="@+id/textView8" />

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:stretchColumns="1"
        android:id="@+id/dataLayout"
        android:fillViewport="true">
    </LinearLayout>

  </LinearLayout>

</ScrollView>

问题是屏幕上只显示接收数据的前9个值。在那之后,即使我向上滚动屏幕,我也看不到任何值。我想向上滚动屏幕并查看收到的所有值。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

只需使用ScrollViewhow to)包装您的根布局。

<强>更新

尝试按以下方式更新布局:

<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scrollView">

  <LinearLayout
      android:orientation="vertical"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:paddingLeft="@dimen/activity_horizontal_margin"
      android:paddingRight="@dimen/activity_horizontal_margin"
      android:paddingTop="@dimen/activity_vertical_margin"
      android:paddingBottom="@dimen/activity_vertical_margin"
      android:focusable="true"
      android:focusableInTouchMode="true"
      android:baselineAligned="true">

    <TextView
        style="?android:attr/listSeparatorTextViewStyle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textView2"
        android:text="Find Device"
        android:layout_marginTop="5dip" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/scanStatus" />

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Scan"
        android:id="@+id/scan"
        android:layout_gravity="center_horizontal"
        android:enabled="false" />

    <TextView
        style="?android:attr/listSeparatorTextViewStyle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textView4"
        android:layout_marginTop="5dip" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/deviceInfo" />

    <TextView
        style="?android:attr/listSeparatorTextViewStyle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textView3"
        android:text="Connect Device"
        android:layout_marginTop="5dip" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/connectionStatus" />

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Connect"
        android:id="@+id/connect"
        android:layout_gravity="center_horizontal"
        android:enabled="false" />

    </LinearLayout>

    <TextView
        style="?android:attr/listSeparatorTextViewStyle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textView7"
        android:text="Receive"
        android:textColor="#0B0101"
        android:layout_marginTop="5dip" />

    <Button
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:text="Clear Data"
        android:textColor="#FFFCFC"
        android:id="@+id/clearData"
        android:layout_gravity="center_horizontal"
        android:singleLine="false" />

    <TextView
        style="?android:attr/listSeparatorTextViewStyle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textView9"
        android:text="Graphs"
        android:layout_marginTop="5dip" />

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Plot"
        android:id="@+id/Plot"
        android:layout_weight="1"
        android:layout_marginTop="2dip"
        android:singleLine="false"/>


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Distance:"
        android:textColor="#0B0101"
        android:id="@+id/textView8" />

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:stretchColumns="1"
        android:id="@+id/dataLayout">
    </LinearLayout>

  </LinearLayout>
</ScrollView>

答案 1 :(得分:1)

LinearLayout包裹在ScrollView中应该解决它。但是,请使用ListViewRecyclerView而不是自己添加视图。这些循环使用不可见的视图来节省内存。