我需要为 Android TV 定制键盘,如下图所示。该布局有一个带有网格布局管理器的回收器视图,用于自定义行和列。
但是当我运行应用程序时,布局没有在最后一行显示正确的按钮宽度。“空格”按钮的跨度应为 4,“Shift”按钮 2 和“零”按钮 3。
我创建了一个GridLayoutand CardView,但卡片视图不起作用我使用的是 Android Studio 3.0.1
当我查看设计视图时,一切看起来都是正确的。但是当我查看跑步时,我没有看到上面的卡片。仅在其上显示文本和背景。请帮助我,当我在 android 版本 5.1 的设备上启动它时,我遇到了布局问题Lolipop。请协助,它不显示卡片视图
安卓版 5.1 棒棒糖

设计视图

构建摇篮

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@drawable/backpic"
android:weightSum="10"
tools:context="myapplication.cardview.MainActivity">
<RelativeLayout
android:layout_weight="2"
android:layout_width="match_parent"
android:layout_height="0dp">
<TextView
android:id="@+id/textGrid"
android:text="Card View"
android:textSize="34sp"
android:textColor="@android:color/black"
android:textStyle="bold"
android:layout_centerInParent="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
<GridLayout
android:columnCount="2"
android:rowCount="3"
android:alignmentMode="alignMargins"
android:columnOrderPreserved="false"
android:layout_weight="8"
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:layout_gravity="center_horizontal|center_vertical"
android:layout_margin="16dp" …Run Code Online (Sandbox Code Playgroud) android grid-layout android-layout android-gridlayout android-cardview
我有一个父级Horizontal Recycleview,其中包含十二个Vertical Recycleviews。我想每页仅显示两列,仅在一个水平行上。我用GridLayoutManager。
GridLayoutManager layoutManager = new GridLayoutManager(this,1);
layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
Run Code Online (Sandbox Code Playgroud)
增加跨度会2创建我不想要的两行。
我还尝试layout:width在 xml 中固定值dpor ,sp这会导致不同屏幕尺寸上的列数不同。
每个块的xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/view_table_view_game_block_constraint_layout"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:background="@drawable/shape_round_top"
android:layout_marginTop="8dp">
<TextView
android:id="@+id/textView_table_view_odds_block_time"
android:layout_width="0dp"
android:layout_height="50sp"
android:gravity="center_vertical"
android:textColor="@color/colorFontWhite"
android:textSize="@dimen/font_size"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button_table_view_odds_block_hometeam"
android:layout_width="0dp"
android:layout_height="50sp"
android:layout_marginTop="4dp"
android:textAlignment="textStart"
android:background="@android:color/transparent"
android:textColor="@color/colorFontWhite"
android:textSize="@dimen/font_size"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView_table_view_odds_block_time" />
<Button
android:id="@+id/button_table_view_odds_block_drawable"
android:layout_width="0dp"
android:layout_height="50sp"
android:layout_marginTop="4dp"
android:background="@android:color/transparent"
android:textAlignment="textStart"
android:textColor="@color/colorFontWhite"
android:textSize="@dimen/font_size"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/button_table_view_odds_block_hometeam" />
<Button …Run Code Online (Sandbox Code Playgroud) android android-layout android-gridlayout android-recyclerview
我一直在尝试将视图添加到 gridLayout,我已经完成了,但它们没有按照应有的方式调整到列,我曾尝试使用在 XML 中显示良好但没有成功的相同属性来填充视图。
现在,我正在尝试以编程方式创建视图,但它不起作用,我该如何实现我想要的?
相关代码:
这是我的 GridLayout
<android.support.v7.widget.GridLayout
android:id="@+id/grd_team_a"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="12dp"
android:horizontalSpacing="1dp"
app:columnCount="5"
app:orientation="horizontal">
<TextView
android:id="@+id/txtPlayersNameTi"
android:text="Jugadores"
android:textSize="14sp"
android:paddingTop="5dp"
android:paddingBottom="5dp"
app:layout_columnWeight="2"
app:layout_columnSpan="2"
android:textStyle="bold"/>
<TextView
android:text="Goles"
android:gravity="center_horizontal"
android:paddingRight="5dp"
android:textSize="14sp"
android:paddingTop="5dp"
android:paddingBottom="5dp"
app:layout_columnWeight="1"
app:layout_columnSpan="1"
android:textStyle="bold"/>
<ImageView
android:src="@drawable/ic_yellow_card_match"
android:gravity="center_horizontal"
android:textSize="14sp"
android:paddingTop="5dp"
android:paddingBottom="5dp"
app:layout_columnWeight="1"
app:layout_columnSpan="1"
android:textStyle="bold"/>
<ImageView
android:src="@drawable/ic_red_card_match"
android:gravity="center_horizontal"
android:paddingTop="5dp"
android:paddingBottom="5dp"
app:layout_columnWeight="1"
app:layout_columnSpan="1"
android:textStyle="bold"/>
</android.support.v7.widget.GridLayout>
Run Code Online (Sandbox Code Playgroud)
这是它在 xml 预览中的样子:
这就是它应该如何处理数据:
但是,在添加此代码后:
int i = 2;
loading=false;
GridLayout.Spec col2 = GridLayout.spec(2);
GridLayout.Spec col3 = GridLayout.spec(3);
GridLayout.Spec col4 = GridLayout.spec(4);
GridLayout.Spec colspan2 = GridLayout.spec(0, 1); …Run Code Online (Sandbox Code Playgroud) 我试图将屏幕划分为4个相等的部分,但是遇到了问题.
<GridLayout
android:rowCount="2"
android:columnCount="2"
android:layout_width="match_parent"
android:layout_height="match_parent">
<View
android:background="@drawable/rectangle"
android:layout_column="0"
android:layout_row="0"
/>
<View
android:background="@drawable/rectangle"
android:layout_column="1"
android:layout_row="0"
/>
<View
android:background="@drawable/rectangle"
android:layout_column="0"
android:layout_row="1"
/>
<View
android:background="@drawable/rectangle"
android:layout_column="1"
android:layout_row="1"
/>
Run Code Online (Sandbox Code Playgroud)
而rectangle.xml文件是
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/listview_background_shape">
<stroke android:width="2dp" android:color="#ff207d94" />
<padding android:left="2dp"
android:top="2dp"
android:right="2dp"
android:bottom="2dp" />
<corners android:radius="20dp" />
<solid android:color="#ffffffff" />
</shape>
Run Code Online (Sandbox Code Playgroud)
现在矩形正在屏幕之外,第一列填满整个屏幕.
我想创建一个能够在所有API中运行的GridLayout.
问题是,当我使用GridLayout而不是android.support.v7.widget.GridLayout时,该应用程序在Android 7.1.1中正常运行,但在旧版本中它崩溃了.
但是,如果我使用android.support.v7.widget.GridLayout而不是GridLayout(如下面的代码),它总是崩溃.
activity_main
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#FFF"
tools:context="devector.dom.gridtest.MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="wrap_content">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textGrid"
android:text="Grid test"
android:textColor="#000"
android:layout_centerInParent="true"
android:textSize="34sp"
/>
</RelativeLayout>
<android.support.v7.widget.GridLayout
android:textAlignment="center"
android:id="@+id/mainGrid"
android:padding="25dp"
android:layout_marginLeft="8dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:columnCount="2"
app:rowCount="3"
app:alignmentMode="alignMargins"
app:columnOrderPreserved="false">
<!-- Row 1 -->
<!-- Column 1-->
<android.support.v7.widget.CardView
android:layout_width="150dp"
android:layout_height="125dp"
android:layout_marginBottom="16dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
app:cardElevation="8dp"
app:cardCornerRadius="8dp"
>
<LinearLayout
android:layout_gravity="center_horizontal|center_vertical"
android:layout_margin="16dp"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<ImageView
android:src="@drawable/zerotwo"
android:layout_gravity="center_horizontal" …Run Code Online (Sandbox Code Playgroud) 我是在制造GridLayout的CardView用于自动定向cardview,高度和宽度cardview设置为0dp它在nougart工作的罚款和奥利奥,但没有工作Lollipop和Kitkat。这是布局代码:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.help.MainActivity">
<LinearLayout
android:orientation="vertical"
android:background="@drawable/bg"
android:weightSum="10"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_weight="2"
android:layout_width="match_parent"
android:layout_height="0dp">
<TextView
android:id="@+id/textGrid"
android:text="GRID LAYOUT"
android:textSize="34sp"
android:textColor="@android:color/white"
android:layout_centerInParent="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
<GridLayout
android:id="@+id/mainGrid"
android:columnCount="2"
android:rowCount="3"
android:alignmentMode="alignMargins"
android:columnOrderPreserved="false"
android:layout_weight="8"
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:layout_gravity="center_horizontal|center_vertical"
android:layout_margin="16dp"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"> …Run Code Online (Sandbox Code Playgroud) android android-layout android-gridlayout android-studio android-cardview