线性布局不会在 ScrollView 中扩展

杰弗里·张

我希望使用卡片视图项目做一个可滚动的网格布局。

我在网上尝试了很多解决方案,但似乎不能满足我想要的结果。
经过一番调查,我发现这与整个项目有关。
创建新活动后,在 xml 文件中,我尝试了完全相同的代码,这些代码可以在其他项目中工作,但在我当前的项目中却不起作用。

以下是我用过的xml代码和java代码,
fragment_home.xml

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/fragment_home"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.android.chatapps_android.tabviewChatbox">

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

    <GridLayout
        android:id="@+id/mainGrid"
        android:layout_weight="10"
        android:columnCount="2"
        android:rowCount="3"
        android:alignmentMode="alignMargins"
        android:columnOrderPreserved="false"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:padding="14dp">

        <!-- Row 1 -->

        <!-- Column 1 -->
        <android.support.v7.widget.CardView
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_columnWeight="1"
            android:layout_rowWeight="1"
            android:layout_marginBottom="16dp"
            android:layout_marginLeft="16dp"
            android:layout_marginRight="16dp"
            app:cardElevation="8dp"
            app:cardCornerRadius="8dp">

            <LinearLayout
                android:orientation="vertical"
                android:layout_margin="16dp"
                android:layout_gravity="center_horizontal|center_vertical"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">

                <ImageView
                    android:id="@+id/ivBasicImage"
                    android:layout_gravity="center_horizontal"
                    android:layout_width="70sp"
                    android:layout_height="70sp" />

                <TextView
                    android:text="Noah"
                    android:layout_gravity="center_horizontal"
                    android:textColor="@android:color/black"
                    android:textSize="18dp"
                    android:layout_height="wrap_content"
                    android:layout_width="wrap_content"
                    />
            </LinearLayout>
        </android.support.v7.widget.CardView>

        <!-- Column 2 -->
        <android.support.v7.widget.CardView
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_columnWeight="1"
            android:layout_rowWeight="1"
            android:layout_marginBottom="16dp"
            android:layout_marginLeft="16dp"
            android:layout_marginRight="16dp"
            app:cardElevation="8dp"
            app:cardCornerRadius="8dp">

            <LinearLayout
                android:orientation="vertical"
                android:layout_margin="16dp"
                android:layout_gravity="center_horizontal|center_vertical"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">

                <ImageView
                    android:id="@+id/ivBasicImage2"
                    android:layout_gravity="center_horizontal"
                    android:layout_width="70sp"
                    android:layout_height="70sp" />

                <TextView
                    android:text="Adam"
                    android:layout_gravity="center_horizontal"
                    android:textColor="@android:color/black"
                    android:textSize="18dp"
                    android:layout_height="wrap_content"
                    android:layout_width="wrap_content"
                    />
            </LinearLayout>
        </android.support.v7.widget.CardView>

        <!-- Row 2 -->

        <!-- Column 1 -->
        <android.support.v7.widget.CardView
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_columnWeight="1"
            android:layout_rowWeight="1"
            android:layout_marginBottom="16dp"
            android:layout_marginLeft="16dp"
            android:layout_marginRight="16dp"
            app:cardElevation="8dp"
            app:cardCornerRadius="8dp">

            <LinearLayout
                android:orientation="vertical"
                android:layout_margin="16dp"
                android:layout_gravity="center_horizontal|center_vertical"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">

                <ImageView
                    android:id="@+id/ivBasicImage3"
                    android:layout_gravity="center_horizontal"
                    android:layout_width="70sp"
                    android:layout_height="70sp" />

                <TextView
                    android:text="Warlock"
                    android:layout_gravity="center_horizontal"
                    android:textColor="@android:color/black"
                    android:textSize="18dp"
                    android:layout_height="wrap_content"
                    android:layout_width="wrap_content"
                    />
            </LinearLayout>
        </android.support.v7.widget.CardView>

        <!-- Column 2 -->
        <android.support.v7.widget.CardView
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_columnWeight="1"
            android:layout_rowWeight="1"
            android:layout_marginBottom="16dp"
            android:layout_marginLeft="16dp"
            android:layout_marginRight="16dp"
            app:cardElevation="8dp"
            app:cardCornerRadius="8dp">

            <LinearLayout
                android:orientation="vertical"
                android:layout_margin="16dp"
                android:layout_gravity="center_horizontal|center_vertical"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">

                <ImageView
                    android:id="@+id/ivBasicImage4"
                    android:layout_gravity="center_horizontal"
                    android:layout_width="70sp"
                    android:layout_height="70sp" />

                <TextView
                    android:text="Amy"
                    android:layout_gravity="center_horizontal"
                    android:textColor="@android:color/black"
                    android:textSize="18dp"
                    android:layout_height="wrap_content"
                    android:layout_width="wrap_content"
                    />
            </LinearLayout>
        </android.support.v7.widget.CardView>

        <!-- Row 3 -->

        <!-- Column 1 -->
        <android.support.v7.widget.CardView
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_columnWeight="1"
            android:layout_rowWeight="1"
            android:layout_marginBottom="16dp"
            android:layout_marginLeft="16dp"
            android:layout_marginRight="16dp"
            app:cardElevation="8dp"
            app:cardCornerRadius="8dp">

            <LinearLayout
                android:orientation="vertical"
                android:layout_margin="16dp"
                android:layout_gravity="center_horizontal|center_vertical"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">

                <ImageView
                    android:id="@+id/ivBasicImage5"
                    android:layout_gravity="center_horizontal"
                    android:layout_width="70sp"
                    android:layout_height="70sp" />

                <TextView
                    android:text="Felicia"
                    android:layout_gravity="center_horizontal"
                    android:textColor="@android:color/black"
                    android:textSize="18dp"
                    android:layout_height="wrap_content"
                    android:layout_width="wrap_content"
                    />
            </LinearLayout>
        </android.support.v7.widget.CardView>

        <!-- Column 2 -->
        <android.support.v7.widget.CardView
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_columnWeight="1"
            android:layout_rowWeight="1"
            android:layout_marginBottom="16dp"
            android:layout_marginLeft="16dp"
            android:layout_marginRight="16dp"
            app:cardElevation="8dp"
            app:cardCornerRadius="8dp">

            <LinearLayout
                android:orientation="vertical"
                android:layout_margin="16dp"
                android:layout_gravity="center_horizontal|center_vertical"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">

                <ImageView
                    android:id="@+id/ivBasicImage6"
                    android:layout_gravity="center_horizontal"
                    android:layout_width="70sp"
                    android:layout_height="70sp" />

                <TextView
                    android:text="John"
                    android:layout_gravity="center_horizontal"
                    android:textColor="@android:color/black"
                    android:textSize="18dp"
                    android:layout_height="wrap_content"
                    android:layout_width="wrap_content"
                    />
            </LinearLayout>
        </android.support.v7.widget.CardView>

    </GridLayout>
    </LinearLayout>
</ScrollView>


这是此片段活动的 Java 代码

public class HomeFragment extends Fragment {

GridLayout mainGrid;
ImageView ivBasicImage, ivBasicImage2, ivBasicImage3, ivBasicImage4, ivBasicImage5, ivBasicImage6;

public HomeFragment() {
    // Required empty public constructor
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment_home, container, false);
    // Inflate the layout for this fragment

    mainGrid = (GridLayout) v.findViewById(R.id.mainGrid);

    //set Event
    setSingleEvent (mainGrid);

    final SwipeRefreshLayout mSwipeRefreshLayout = (SwipeRefreshLayout) v.findViewById(R.id.fragment_home);

    mSwipeRefreshLayout.setOnRefreshListener(
            new SwipeRefreshLayout.OnRefreshListener() {
                @Override
                public void onRefresh() {
                    ((tabviewChatbox) getActivity()).refreshNow();
                    Toast.makeText(getContext(), "Refreshed", Toast.LENGTH_LONG).show();
                }
            }
    );

    return v;
}

private void setSingleEvent(GridLayout mainGrid) {
    String imageURL = "https://i.imgur.com/ql2DkPW.jpg";
    ivBasicImage = (ImageView) mainGrid.findViewById(R.id.ivBasicImage);
    Picasso.with(getContext()).load(imageURL).transform(new CircleTransform()).into(ivBasicImage);
    ivBasicImage2 = (ImageView) mainGrid.findViewById(R.id.ivBasicImage2);
    Picasso.with(getContext()).load(imageURL).transform(new CircleTransform()).into(ivBasicImage2);
    ivBasicImage3 = (ImageView) mainGrid.findViewById(R.id.ivBasicImage3);
    Picasso.with(getContext()).load(imageURL).transform(new CircleTransform()).into(ivBasicImage3);
    ivBasicImage4 = (ImageView) mainGrid.findViewById(R.id.ivBasicImage4);
    Picasso.with(getContext()).load(imageURL).transform(new CircleTransform()).into(ivBasicImage4);
    ivBasicImage5 = (ImageView) mainGrid.findViewById(R.id.ivBasicImage5);
    Picasso.with(getContext()).load(imageURL).transform(new CircleTransform()).into(ivBasicImage5);
    ivBasicImage6 = (ImageView) mainGrid.findViewById(R.id.ivBasicImage6);
    Picasso.with(getContext()).load(imageURL).transform(new CircleTransform()).into(ivBasicImage6);

    //Loop all child item of Main Grid
    for(int i=0; i<mainGrid.getChildCount(); i++)
    {
        CardView cardView = (CardView) mainGrid.getChildAt(i);

        final int finalI = i;
        cardView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //Toast.makeText (getContext(), "Clicked at activity " + finalI, Toast.LENGTH_SHORT).show();
                Intent intent = new Intent(getActivity(), ImageButtonActivity.class);
                intent.putExtra("info", "This is activity from card item "+finalI );
                startActivity(intent);
            }
        });
    }
}


此外,这里是 Android Studio 中的设计视图。

LinearLayout 的视图被挤在屏幕顶部

在此处输入图片说明

ADM

android:weightSum不会在里面工作ScrollView这就是使用ScrollView垂直包含所有元素的全部意义,即使在高度边界之外。设置android:fillViewport="true"ScrollView使其工作。这将使内容填充 ViewPort。

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/fragment_home"
android:layout_width="match_parent"
android:fillViewport="true"
android:layout_height="match_parent"
android:orientation="vertical"
>
</ScrollView>

这相当于使用 aLinearLayout所以为什么不直接删除ScrollViewLinearLayout使用weightSum.

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用ListAdapter填充ScrollView布局中的LinearLayout

LinearLayout在ScrollView中未扩展

UILabel不会在带有自动布局的UIScrollView中自动换行

自动布局不会在iOS 10中设置动画,但在iOS 9中可以正常工作

为什么宏扩展不会在Clojure中扩展嵌套形式?

帧布局不会在recyclerview单元中持续存在

RecyclerView中的ScrollView不会滚动

即使预览看起来很好,Scrollview也不会在模拟器或电话中显示任何内容

SwiftUI JSON不会在ScrollView HStack中打印标题(但会在列表中显示)

ScrollView和ListView在相同的xml布局中

sed不会在脚本中扩展我的BASH变量

如果ScrollView是父级,则不会在RelativeLayout(Android)中显示TableLayout

Safari扩展中的注入脚本不会在Youtube中触发

UIActivityIndicator不会在iOS中停止

在scrollview中膨胀5个线性布局,彼此覆盖

Scrollview不能仅在相对布局中工作

RelativeLayout中的ScrollView:底部布局阻止ScrollView中的EditText

旋转木马布局不会在Botframework中呈现。

ScrollView在xml布局中?

文本不会在IE 11 Flex布局中自动换行

如何在我的布局中创建 ScrollView

ScrollView 在布局中不起作用

Android Studio 在约束布局中嵌套 ScrollView

片段不会在活动中显示

glob 模式不会在 zsh 中的文件内部扩展

ScrollView 不会在 collectionViewCell 中滚动

具有自定义颜色属性的 TextView 不会在布局预览中呈现

变量不会在 makefile 中扩展为 patsubst

Xcode:didTransition 不会在 iMessage 扩展中运行