android - 可滚动的线性布局,重量大于android中的屏幕

标签 android android-linearlayout

我正在尝试创建一个垂直线性布局,其权重比屏幕大。比方说屏幕尺寸的 2 倍。为了让它工作,我显然需要能够滚动浏览它。不幸的是,我想不出办法做到这一点。我尝试使用布局权重,并将权重总和设置为所有组件权重实际总和的一半(因此,如果所有组件权重总和为 20,我将权重总和设置为 10)并设法使其工作但不幸的是由于某种原因,滚动不再起作用。

有什么我遗漏的吗?

这是使线性布局两倍于屏幕但滚动不起作用的代码:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:fillViewport="true">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:weightSum="2">

        <EditText android:id="@+id/id1"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:textSize="25dp"
            android:gravity="center"
            android:layout_weight="2"/>

        <EditText android:id="@+id/id2"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:textSize="25dp"
            android:gravity="center"
            android:layout_weight="2"/>

    </LinearLayout>
</ScrollView>

最佳答案

根据您的评论,这是一种实现您所寻找的目标的编程方式。我不相信有一种方法可以在纯布局 XML 中实现这一点。

布局:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center_horizontal"
    android:background="#000000"
    android:fillViewport="true" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#FFFFFF"
        android:orientation="vertical" >

        <EditText
            android:id="@+id/id1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#DCDCDC"
            android:gravity="center"
            android:text="ONE ONE ONE"
            android:textIsSelectable="false"
            android:textSize="45sp" />

        <EditText
            android:id="@+id/id2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#AAAAAA"
            android:gravity="center"
            android:text="TWO TWO TWO"
            android:textIsSelectable="false"
            android:textSize="45sp" />

        <EditText
            android:id="@+id/id3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#777777"
            android:gravity="center"
            android:text="THREE THREE THREE"
            android:textIsSelectable="false"
            android:textSize="45sp" />
    </LinearLayout>

</ScrollView>

Activity :

public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);

      // Get display size -- API L13 and up. Otherwise use getResources().getDisplayMetrics();
      Display display = getWindowManager().getDefaultDisplay();
      Point size = new Point();
      display.getSize(size);


      // You want size to be 50% per EditText, so divide available height by 2.
      // Note: this is absolute height, does not take into consideration window decoration!
      int editTextHeight = size.y / 2;

      // Get a handle to your EditTexts
      EditText t1 = (EditText) findViewById(R.id.id1);
      EditText t2 = (EditText) findViewById(R.id.id2);
      EditText t3 = (EditText) findViewById(R.id.id3);

      // Set height to 50% of screen size each
      t1.setHeight(editTextHeight);
      t2.setHeight(editTextHeight);
      t3.setHeight(editTextHeight);
}

这样就可以了。最终结果:

EditText 50% screen height EditText 50% screen height EditText 50% screen height

关于android - 可滚动的线性布局,重量大于android中的屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17033126/

相关文章:

android - 设置 LinearLayout 相对于同一容器中其他 LinearLayout 的高度

android - 从一个 onClick 更改两个按钮的背景?

java - Android中建议的每应用程序CPU负载

android - ActionBarSherlock 中的 PopupMenu 等价物

android - 如何使用Gradle用不同的AndroidManifest.xml生成APK?

android-layout - Android:动态添加 TextView 到 ScrollView

android - 如何比较 Android Studio 中的两个 Git 分支?

android - DrawerLayout 必须使用 MeasureSpec.EXACTLY 进行测量。在 android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java :994)

Android:在自定义 View 上膨胀异常

android - 什么时候必须扩充自定义 View 的布局?