Java Android Recyclerview GridLayoutManager,当给定的行布局不存在时';不要包装它的内容
我试图通过使用Recyclerview和GridlayoutManager来列出颜色,来创建一个颜色选择器应用程序。我使用ImageButton呈现颜色。有两个recyclerviews,第一个显示我制作的主颜色,第二个显示第一个中选定颜色的色调和阴影。我的代码很难看,但这是为了实验,所以现在我只想让第二个使用gridlayoutmanager的recyclerview分为两行四列。我可以用下面的代码,但它只显示前4种颜色,其他的我必须向下滚动视图。 主要活动:Java Android Recyclerview GridLayoutManager,当给定的行布局不存在时';不要包装它的内容,java,android,Java,Android,我试图通过使用Recyclerview和GridlayoutManager来列出颜色,来创建一个颜色选择器应用程序。我使用ImageButton呈现颜色。有两个recyclerviews,第一个显示我制作的主颜色,第二个显示第一个中选定颜色的色调和阴影。我的代码很难看,但这是为了实验,所以现在我只想让第二个使用gridlayoutmanager的recyclerview分为两行四列。我可以用下面的代码,但它只显示前4种颜色,其他的我必须向下滚动视图。 主要活动: package tr.com
package tr.com.beyes.colorpicker;
import android.content.res.Resources;
import android.graphics.Color;
import android.support.v4.content.res.TypedArrayUtils;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Toast;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Resources r=getResources();
int[] fontColors = r.getIntArray(R.array.fontcolors);
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.fontColorView);
GridLayoutManager gridLayoutManager = new GridLayoutManager(this,11, GridLayoutManager.VERTICAL, true);
recyclerView.setLayoutManager(gridLayoutManager);
RecyclerView recyclerView2 = (RecyclerView) findViewById(R.id.fontColorViewSub);
GridLayoutManager gridLayoutManager2 = new GridLayoutManager(this,4);
recyclerView2.setLayoutManager(gridLayoutManager2);
int[] tint = new int[8];
tint[0]=(Color.rgb(0,0,0));
int red = Color.red(fontColors[0]);
int green = Color.green(fontColors[0]);
int blue = Color.blue(fontColors[0]);
for(int i=1; i<7;i++){
red = (int) (red + (255-red) * 0.25);
green = (int) (green + (255-green) * 0.25);
blue = (int) (blue + (255-blue) * 0.25);
tint[i]=(Color.rgb(red,green,blue));
}
tint[7]=(Color.rgb(255,255,255));
ColorPickerAdapter colorPickerAdapter2 = new ColorPickerAdapter(tint,this, null);
recyclerView2.setAdapter(colorPickerAdapter2);
ColorPickerAdapter colorPickerAdapter = new ColorPickerAdapter(fontColors,this,colorPickerAdapter2);
recyclerView.setAdapter(colorPickerAdapter);
}
}
package tr.com.beyes.colorpicker;
导入android.content.res.Resources;
导入android.graphics.Color;
导入android.support.v4.content.res.TypedArrayUtils;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.support.v7.widget.GridLayoutManager;
导入android.support.v7.widget.LinearLayoutManager;
导入android.support.v7.widget.RecyclerView;
导入android.view.view;
导入android.widget.Toast;
导入java.util.ArrayList;
公共类MainActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Resources r=getResources();
int[]fontColors=r.getIntArray(r.array.fontColors);
RecycleView RecycleView=(RecycleView)findViewById(R.id.fontColorView);
GridLayoutManager GridLayoutManager=新的GridLayoutManager(this,11,GridLayoutManager.VERTICAL,true);
setLayoutManager(gridLayoutManager);
RecyclerView recyclerView2=(RecyclerView)findViewById(R.id.fontColorViewSub);
GridLayoutManager gridLayoutManager2=新的GridLayoutManager(这个,4);
RecycleServiceW2.setLayoutManager(gridLayoutManager2);
int[]tint=新int[8];
色调[0]=(Color.rgb(0,0,0));
int red=Color.red(fontColors[0]);
int green=Color.green(fontColors[0]);
int blue=Color.blue(fontColors[0]);
对于(int i=1;i1.使用setHasFixedSize(true)
到recyclerView
和recyclerView2
2.更新gridLayoutManager2
参数如下:
GridLayoutManager gridLayoutManager2 = new GridLayoutManager(this, 4, GridLayoutManager.VERTICAL, true);
3.使用NestedScrollView
作为线性布局的容器
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView 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:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="tr.com.beyes.colorpicker.MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/fontColorView" />
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/fontColorViewSub"
android:layout_marginTop="20dp" />
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
希望这能起作用~没有起作用。它看起来一样,但这次唯一的区别是视图开始向下滚动到第二行。我想同时显示2行,而不将滚动的ethasFixedSize(true)显示到recyclerviews。检查我的更新回答我也这样做了。相同:(尝试添加android:DegenantFocusability)=“blocksDescendants”到LinearLayoutPill相同。我想知道是否需要动态更改recyclerview的高度?
GridLayoutManager gridLayoutManager2 = new GridLayoutManager(this, 4, GridLayoutManager.VERTICAL, true);
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView 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:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="tr.com.beyes.colorpicker.MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/fontColorView" />
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/fontColorViewSub"
android:layout_marginTop="20dp" />
</LinearLayout>
</android.support.v4.widget.NestedScrollView>