我的代码是 -
<GridLayout
xmlns:android= "http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:columnCount="4"
android:orientation="horizontal" >
<Button android:text="@string/btn7" />
<Button android:text="@string/btn8" />
<Button android:text="@string/btn9" />
<Button android:text="@string/btndiv" />
<Button android:text="@string/btn4" />
<Button android:text="@string/btn5" />
<Button android:text="@string/btn6" />
<Button android:text="@string/btnmul" />
<Button android:text="@string/btn1" />
<Button android:text="@string/btn2" />
<Button android:text="@string/btn3" />
<Button android:text="@string/btnmin" />
<Button android:text="@string/btn00" />
<Button android:text="@string/btn0" />
<Button android:text="@string/btndec" />
<Button android:text="@string/btnadd" />
<Button android:text="@string/btnsqrt" />
<Button android:text="@string/btncbrt" />
<Button android:text="@string/btnrec" />
<Button
android:layout_gravity="fill"
android:layout_rowSpan="2"
android:text="@string/btneql" />
<Button android:text="@string/btnpow" />
<Button android:text="@string/btnper" />
<Button …Run Code Online (Sandbox Code Playgroud) 我正在试图模糊我的android应用程序,我使用android.support.v7.appcompat和android.support.v7.GridLayout,但应用程序崩溃时出现以下异常:
android.view.InflateException: Binary XML file line #2: Error inflating class android.support.v7.widget.GridLayout
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:698)
at android.view.LayoutInflater.inflate(LayoutInflater.java:466)
at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
at com.droid.fragments.c.al.onCreateView(Unknown Source)
at android.support.v4.app.Fragment.performCreateView(Unknown Source)
at android.support.v4.app.FragmentManagerImpl.moveToState(Unknown Source)
at android.support.v4.app.FragmentManagerImpl.moveToState(Unknown Source)
at android.support.v4.app.BackStackRecord.run(Unknown Source)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(Unknown Source)
at android.support.v4.app.FragmentManagerImpl$1.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: android.support.v7.widget.GridLayout
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
at android.view.LayoutInflater.createView(LayoutInflater.java:552)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
Run Code Online (Sandbox Code Playgroud)
我的proguard-project.txt:
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose
-dontoptimize
-dontpreverify
-keepclasseswithmembernames class …Run Code Online (Sandbox Code Playgroud) Android Studio 3.1、Java 1.8、Gradle 4.1
我使用 GridLayout。一切正常。但我需要在列之间和行之间设置空间(例如 10dp)。我怎么能做到这一点?
主文件:
<GridLayout
android:id="@+id/categoriesContainer"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:verticalSpacing="10dp"
app:layout_constraintEnd_toEndOf="@+id/birthDateContainer"
app:layout_constraintStart_toStartOf="@+id/birthDateContainer"
app:layout_constraintTop_toBottomOf="@+id/birthDateContainer">
</GridLayout>
Run Code Online (Sandbox Code Playgroud)
profile_category_active.xml
<?xml version="1.0" encoding="utf-8"?>
<layout 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.support.constraint.ConstraintLayout
android:id="@+id/profileCategoryContainer"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/categoryNameTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginEnd="30dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="30dp"
android:layout_marginStart="5dp"
android:layout_marginTop="5dp"
android:ellipsize="end"
android:maxLines="1"
android:text="TextView" />
</android.support.constraint.ConstraintLayout>
</layout>
Run Code Online (Sandbox Code Playgroud)
活动:我以编程方式添加行:
GridLayout gridLayout = findViewById(R.id.categoriesContainer);
gridLayout.setColumnCount(columnCount);
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
for (int index = 0; index < 10; index++) {
View profileCategoryActive = inflater.inflate(R.layout.profile_category_active, null, false);
categoriesGridContainer.addView(profileCategoryActive);
ConstraintLayout profileCategoryContainer = profileCategoryActive.findViewById(R.id.profileCategoryContainer); …Run Code Online (Sandbox Code Playgroud) 我有一个表单,我想在一列中显示:
account name
______________________
password
______________________
[ connect ]
Run Code Online (Sandbox Code Playgroud)
当水平空间有限时(即纵向).当水平空间充足时,我希望它流入两列方向:
account name _________________
password _________________
[ connect ]
Run Code Online (Sandbox Code Playgroud)
我知道你可以使用一对布局资源来做到这一点,但我想只有一个动态列数的布局.
我有一个GridLayout布局.我想从右到左放置项目,这意味着我希望在我的布局的右上角有单元格(1,1).GridView到目前为止,我已经测试了这些代码:
1 android:gravity="right" 和 android:layout_gravity="right"
,但它不工作.
2-我也测试过 android:layoutDirection="rtl"
它也不起作用.如何从右到左放置物品?
试图在网格布局中获得几行按钮。
按钮大小还可以,但边距似乎坏了。
package ray.gui;
import android.app.Activity;
import android.content.pm.*;
import android.graphics.*;
import android.os.Bundle;
import android.view.*;
import android.widget.*;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
int size=150;
int rows=2;
int columns=5;
Integer[] colors=new Integer[columns];
colors[0]=Color.RED;
colors[1]=Color.YELLOW;
colors[2]=Color.GREEN;
colors[3]=Color.BLUE;
colors[4]=Color.rgb(255,165,0);
GridLayout gridLayout=new GridLayout(this);
gridLayout.setRowCount(rows);
gridLayout.setColumnCount(columns);
GridLayout.LayoutParams layoutParams=new GridLayout.LayoutParams();
layoutParams.setMargins(size*30/100,size*30/100,size*30/100,size*30/100);
gridLayout.setLayoutParams(layoutParams);
for(int i=0;i<rows*columns;i++) {
Button button=new Button(this);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(size,size);
params.width = size;
params.height= size;
button.setLayoutParams(params);
button.setText(""+i);
//button.setLayoutParams(layoutParams);
if(i/columns%2==1)
button.setBackgroundColor(colors[i%columns]);
gridLayout.addView(button);
}
setContentView(gridLayout);
}
@Override …Run Code Online (Sandbox Code Playgroud) java user-interface android android-layout android-gridlayout
我试图用GridLayout重现这个计算器布局
但这是我尝试的代码所得到的.
实际上在设备上它变得更糟,它会削减必须跨越两行的最后一个相等按钮.
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#000000"
android:columnCount="5"
android:rowCount="2"
android:orientation="horizontal"
android:padding="5dp">
<Button
android:layout_columnSpan="1"
android:layout_rowSpan="1"
android:text="1" />
<Button
android:layout_columnSpan="1"
android:layout_rowSpan="1"
android:text="2" />
<Button
android:layout_columnSpan="1"
android:layout_rowSpan="1"
android:text="3" />
<Button
android:layout_columnSpan="1"
android:layout_rowSpan="1"
android:text="-" />
<Button
android:layout_columnSpan="1"
android:layout_rowSpan="2"
android:layout_gravity="fill_vertical"
android:text="=" />
<Button
android:layout_columnSpan="2"
android:layout_rowSpan="1"
android:layout_gravity="fill_horizontal"
android:text="0" />
<Button
android:layout_columnSpan="1"
android:layout_rowSpan="1"
android:text="." />
<Button
android:layout_columnSpan="1"
android:layout_rowSpan="1"
android:text="+" />
<Space
android:layout_columnSpan="1"
android:layout_rowSpan="1"
android:text="-" />
<Space
android:layout_columnSpan="1"
android:layout_rowSpan="1"
android:text="=" />
</GridLayout>
Run Code Online (Sandbox Code Playgroud)
然而,它一直走出界限.我试图根据这个帖子改为"android.support.v7.widget.GridLayout":
但没多大帮助.
任何线索如何使其精确匹配手机大小?
在使用GridLayout和ConstraintLayout时,我收到以下错误
Error:(115) Attribute "orientation" has already been defined
Run Code Online (Sandbox Code Playgroud)
问题是因为两个库都使用它
<attr name="orientation">
Run Code Online (Sandbox Code Playgroud)
有没有人知道一个解决方法?
我想用四个具有相同宽度和高度的按钮填充整个屏幕,所以我认为网格布局是一个好主意:
<GridLayout
android:id="@+id/grid"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnCount="2"
android:rowCount="2"
>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
android:layout_columnWeight="1"
android:layout_rowWeight="0"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
android:layout_columnWeight="1"
android:layout_rowWeight="0"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
android:layout_rowWeight="1"
android:layout_columnWeight="1"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
android:layout_rowWeight="1"
android:layout_columnWeight="1"
/>
</GridLayout>
Run Code Online (Sandbox Code Playgroud)
不幸的是我的结果看起来像这样:
我不明白为什么第二排的高度这么大?
我认为网格布局中的每个单元格都有相同的宽度和高度!
如何创建偶数行 3 列和奇数行 4 列的 Grid Recyclerview?
lLayout = new GridLayoutManager(getActivity(), 4, LinearLayoutManager.VERTICAL, false); // MAX NUMBER OF SPACES
lLayout.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
return (position % 3 == 0 ? 3 : 4);
}
});
recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(lLayout);
if (arrayList != null) {
adapter = new RecyclerViewAdapter(getActivity(), arrayList);
recyclerView.setAdapter(adapter);
}
Run Code Online (Sandbox Code Playgroud) android android-gridlayout gridlayoutmanager android-recyclerview