标签: android-gridlayout

为什么gridlayout中的多行按钮有奇怪的上边距?

我有这个布局:

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

    <FrameLayout
            android:layout_width="300px"
            android:layout_height="5px"
            android:background="#FF4a80c2"
            >
    </FrameLayout>


    <HorizontalScrollView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:overScrollMode="never">

        <GridLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:rowCount="2"
                android:orientation="vertical"
                android:padding="50px">

            <Button
                    android:layout_marginBottom="20px"
                    android:layout_marginRight="20px"
                    android:lines="2"
                    android:textColor="#fff3f3f3"
                    android:layout_width="165px"
                    android:layout_height="165px"
                    android:text="zrušit bez zápisu"
                    android:gravity="center"
                    android:textStyle="bold"
                    android:padding="10px"
                    android:textSize="24px"
                    android:background="@drawable/cancel_button"/>

            <Button
                    android:layout_marginBottom="20px"
                    android:layout_marginRight="20px"
                    android:lines="2"
                    android:textColor="#fff3f3f3"
                    android:layout_width="165px"
                    android:layout_height="165px"
                    android:text="odchod"
                    android:gravity="center"
                    android:textStyle="bold"
                    android:textSize="24px"
                    android:padding="10px"
                    android:background="@drawable/type_button_default"/>

            <Button
                    android:layout_marginBottom="20px"
                    android:lines="2"
                    android:layout_marginRight="20px"
                    android:textColor="#fff3f3f3"
                    android:layout_width="165px"
                    android:layout_height="165px"
                    android:text="nemoc"
                    android:padding="10px"
                    android:gravity="center"
                    android:textStyle="bold"
                    android:textSize="24px"
                    android:background="@drawable/type_button"/>

            <Button
                    android:layout_marginBottom="20px"
                    android:layout_marginRight="20px"
                    android:lines="2"
                    android:textColor="#fff3f3f3"
                    android:layout_width="165px"
                    android:layout_height="165px"
                    android:text="léka?"
                    android:padding="10px"
                    android:gravity="center"
                    android:textStyle="bold"
                    android:textSize="24px"
                    android:background="@drawable/type_button"/>

            <Button
                    android:layout_marginBottom="20px"
                    android:layout_marginRight="20px"
                    android:lines="2" …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-gridlayout

5
推荐指数
1
解决办法
605
查看次数

如何在GridLayout中限制ListView的高度?

我有一个GridLayout包含a ListView和a TextView.当项目被添加到ListView它时,它将增大尺寸并将其TextView下方推出屏幕.我认为通过设置layout_gravity="fill"ListView它根本不会增长,而是占用所有可用空间.

如何配置ListView占用可用空间而不是增长并将其下方的视图推出屏幕?

我正在寻找一个使用的解决方案GridLayout.我知道在我的情况下,一个人 LinearLayout也会工作.然而,这只是一个最小的测试用例来说明我的问题.

如果可能的话,我不想以编程方式设置高度.

<android.support.v7.widget.GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:columnCount="1"
    app:useDefaultMargins="true" >

    <ListView
        app:layout_gravity="fill" />

    <TextView
        android:text="TextView" />

</android.support.v7.widget.GridLayout>
Run Code Online (Sandbox Code Playgroud)

android android-layout android-gridlayout

5
推荐指数
1
解决办法
2299
查看次数

回收站视图中的动态视图问题

我正在使用回收站视图来显示包含图像网格布局的项目列表.网格布局动态添加到回收器视图适配器上"onBindViewHolder"方法内的列表项.现在的问题是在每个滚动上重新创建网格布局视图.我不希望在滚动时重新创建这些视图.怎么处理?

这是代码片段

 @Override
    public void onBindViewHolder(final PersonViewHolder personViewHolder, final int i) {

                GridLayout feedGrid = new GridLayout(context);
                LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(dipToPixels(context,HomePage.SCREEN_WIDTH),dipToPixels(context,HomePage.SCREEN_WIDTH));
                feedGrid.setLayoutParams(layoutParams);
                feedGrid.setColumnCount(1);

                imgArr = new ImageView[num];
                imgArr[0] = new ImageView(context);
                GridLayout.Spec row = GridLayout.spec(0, 1);
                GridLayout.Spec colspan = GridLayout.spec(0, 1);
                GridLayout.LayoutParams gridLayoutParam = new GridLayout.LayoutParams(row, colspan);
                gridLayoutParam.setGravity(Gravity.FILL);

                    Picasso.with(context).load(urlArr.get(0)).error(mDrawable).placeholder(mDrawable).into(imgArr[0], new Callback() {
                        @Override
                        public void onSuccess() {
                            personViewHolder.feedGridLayout.setVisibility(View.VISIBLE);
                            personViewHolder.loadImg.setVisibility(View.GONE);
                        }

                        @Override
                        public void onError() {
                            personViewHolder.feedGridLayout.setVisibility(View.GONE);
                            personViewHolder.loadImg.setVisibility(View.VISIBLE);

                        }

                    });



                feedGrid.addView(imgArr[0], gridLayoutParam);

                personViewHolder.feedGridLayout.removeAllViews();

                personViewHolder.feedGridLayout.addView(feedGrid);

}
Run Code Online (Sandbox Code Playgroud)

android android-gridlayout recycler-adapter android-recyclerview

5
推荐指数
1
解决办法
2233
查看次数

Android:在gridlayout或gridview中创建具有动态大小的网格

我打算制作网格基础应用程序,其中网格数量将根据用户的点击而改变.网格模式: - 2*2,4*4 ... [比如,用户将点击正确的网格,然后网格数量将增加].我能够制作网格,但它不适合布局.那么,如何更改用户点击的网格数量以及如何动态设置网格的大小.

在这里,我附上了我想要实现的图像.

当用户点击不同颜色的格子,格子的数量将增加第二图像.

图片:1

在此输入图像描述

图片:2

用户点击时网格数量增加.

在此输入图像描述

grid android gridview android-gridlayout

5
推荐指数
1
解决办法
8219
查看次数

如何在LinearLayout单元格中对齐两个TextView?

我有一个垂直列表(垂直LinearLayout).在每个单元格中,我有两个EditText字段,彼此相邻.第一个应该对齐到单元格的左边,第二个对齐到单元格的中间,基本上导致两个列彼此相邻.我以为我使用了两列GridLayout.然而,令我惊讶的是,第二个EditText与单元格的右侧而不是单元格的中间对齐.我错了什么?

    <GridLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:alignmentMode="alignBounds"
    android:columnCount="2" >

    <TextView
        android:id="@+id/sourceLanguage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="left|center_vertical"
        android:text="test1"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#FF3366"
        android:textIsSelectable="true" />

    <TextView
        android:id="@+id/targetLanguage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:gravity="left|center_vertical"
        android:text="test2"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#993366"
        android:textIsSelectable="true" />

</GridLayout>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述 几乎在那里,但没有退出...除了第二列不是完全左对齐.

这是期望的结果!!!

在此输入图像描述

android textview android-linearlayout android-gridlayout

4
推荐指数
1
解决办法
8237
查看次数

使用支持库中的GridLayout导致'NoSuchMethodError:android.support.v4.view.ViewCompat.getLayoutDirection'

我在我的应用程序中使用GridLayout,它运行得很好.现在我也必须支持android 3.xx,所以我加入了android-support-library-v7.我刚刚在所有地方更改了GridLayout和LayoutParams的import语句.我现在可以构建项目,但是当我运行应用程序时,它会因NoSuchMethodError异常而崩溃.

我按照这些步骤来包含支持库

这是堆栈跟踪:

    03-27 13:37:13.454: E/AndroidRuntime(23016): FATAL EXCEPTION: main
03-27 13:37:13.454: E/AndroidRuntime(23016): java.lang.NoSuchMethodError: android.support.v4.view.ViewCompat.getLayoutDirection
03-27 13:37:13.454: E/AndroidRuntime(23016):    at android.support.v7.widget.GridLayout.isLayoutRtlCompat(GridLayout.java:675)
03-27 13:37:13.454: E/AndroidRuntime(23016):    at android.support.v7.widget.GridLayout.getDefaultMargin(GridLayout.java:660)
03-27 13:37:13.454: E/AndroidRuntime(23016):    at android.support.v7.widget.GridLayout.getMargin1(GridLayout.java:671)
03-27 13:37:13.454: E/AndroidRuntime(23016):    at android.support.v7.widget.GridLayout$Axis.computeMargins(GridLayout.java:1547)
03-27 13:37:13.454: E/AndroidRuntime(23016):    at android.support.v7.widget.GridLayout$Axis.getLeadingMargins(GridLayout.java:1558)
03-27 13:37:13.454: E/AndroidRuntime(23016):    at android.support.v7.widget.GridLayout.getMargin(GridLayout.java:683)
03-27 13:37:13.454: E/AndroidRuntime(23016):    at android.support.v7.widget.GridLayout.getTotalMargin(GridLayout.java:692)
03-27 13:37:13.454: E/AndroidRuntime(23016):    at android.support.v7.widget.GridLayout.measureChildWithMargins2(GridLayout.java:897)
03-27 13:37:13.454: E/AndroidRuntime(23016):    at android.support.v7.widget.GridLayout.measureChildrenWithMargins(GridLayout.java:911)
03-27 13:37:13.454: E/AndroidRuntime(23016):    at android.support.v7.widget.GridLayout.onMeasure(GridLayout.java:950)
03-27 13:37:13.454: E/AndroidRuntime(23016):    at android.view.View.measure(View.java:15848)
03-27 13:37:13.454: E/AndroidRuntime(23016):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5008)
03-27 13:37:13.454: E/AndroidRuntime(23016):    at …
Run Code Online (Sandbox Code Playgroud)

android android-gridlayout android-support-library

4
推荐指数
1
解决办法
3596
查看次数

如何将linearLayout转换为GridView/GridLayout

如何将如下所示的线性布局转换为网格视图?所以基本上我需要它是3列和2行(横向).也没有国界.

示例项目在此处上传.

在此输入图像描述

   <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <SurfaceView
            android:id="@+id/video_1_surfaceview"
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="1" />

        <SurfaceView
            android:id="@+id/video_2_surfaceview"
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="1" />

        <SurfaceView
            android:id="@+id/video_3_surfaceview"
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="1" />

        <SurfaceView
            android:id="@+id/video_4_surfaceview"
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="1" />

        <SurfaceView
            android:id="@+id/video_5_surfaceview"
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="1" />

        <SurfaceView
            android:id="@+id/video_6_surfaceview"
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="1" />

    </LinearLayout>
Run Code Online (Sandbox Code Playgroud)

更新:这是我的onCreate()方法和类中的初始化:

public class MultipleVideoPlayActivity extends Activity implements OnBufferingUpdateListener, OnCompletionListener, OnPreparedListener, OnVideoSizeChangedListener, SurfaceHolder.Callback {

    private static final String TAG = "MediaPlayer";
    private static final int[] SURFACE_RES_IDS = { R.id.video_1_surfaceview, R.id.video_2_surfaceview …
Run Code Online (Sandbox Code Playgroud)

android gridview android-linearlayout android-gridlayout

4
推荐指数
1
解决办法
1357
查看次数

在 android 中动态添加子项到 GridLayout 时出现问题

我正在制作一款益智游戏。我正在尝试制作一个GridLayout大小为 4x4 的动态尺寸。我通过代码添加LinearLayout为子项,然后添加到GridLayout 的ImageView内部。LinearLayout布局非常顺利。但是,当我将 ImageView 放入任何网格中时,图像将占据 GridLayout 的完整高度和宽度。但它应该只采用其所在网格的大小。

项目的 Github 链接。

这是我的代码:

    public class PuzzleActivity extends AppCompatActivity {

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.puzzle_layout);

        findViewById(R.id.a0).setOnTouchListener(new MyTouchListener());
        findViewById(R.id.b0).setOnTouchListener(new MyTouchListener());
        findViewById(R.id.c0).setOnTouchListener(new MyTouchListener());
        findViewById(R.id.d0).setOnTouchListener(new MyTouchListener());
        findViewById(R.id.e0).setOnTouchListener(new MyTouchListener());
        GridLayout layout = (GridLayout) findViewById(R.id.gridLayout);
        layout.setRowCount(4);
        layout.setColumnCount(4);
        for (int i = 0; i < 4; i++) {
            GridLayout.Spec rowSpec = GridLayout.spec(i, 1,1);
            for (int j = 0; j < 4; j++) {
                GridLayout.Spec colSpec = …
Run Code Online (Sandbox Code Playgroud)

android android-gridlayout

4
推荐指数
1
解决办法
4346
查看次数

Android GridLayout具有每行动态列数

我有不同宽度的卡,我想创建一个Grid Layout,其中width =匹配父级(填充屏幕)和固定高度。我想在Grid布局中设置卡片,以便列数根据适合行的元素的宽度而变化。

因此,元素将在水平行中设置,直到它们适合屏幕为止,然后在超过固定高度时以垂直滚动的方式转到下一行。

我正在尝试使用“网格布局”,但我不知道它是否适合此解决方案。我使用本机Android

这里的图片看起来应该像这样:

在此处输入图片说明

谢谢。

android android-gridlayout android-recyclerview

4
推荐指数
1
解决办法
3610
查看次数

android中的GridView和GridLayout

我试图在xml文件中添加GridView的子视图,但它给出了错误,并且它与GridLayout一起工作正常.所以我想知道..在Android中有什么区别b/w GridView和GridLayout?

android gridview android-layout android-gridlayout

3
推荐指数
1
解决办法
8706
查看次数