我正在尝试在android studio中创建一个应用程序,由于某些原因,一个gridLayout决定不显示,尽管它占用了屏幕上的必要空间。 Image from android studio,actual screenshot from my phone
布局的XML文件:
<?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:background="#cbcde6"
android:orientation="vertical"
android:gravity="top|center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Insert data"
android:textAppearance="?android:attr/textAppearanceLarge"
/>
<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_gravity="top"
android:columnCount="3"
android:rowCount="3"
android:visibility="visible">
<EditText
android:background="#ffffff"
android:layout_height="30sp"
android:layout_margin="15dp"
android:layout_columnWeight="1"/>
<EditText
android:background="#ffffff"
android:layout_height="30sp"
android:layout_margin="15dp"
android:layout_columnWeight="1"/>
<EditText
android:background="#ffffff"
android:layout_height="30sp"
android:layout_margin="15dp"
android:layout_columnWeight="1"/>
<EditText
android:background="#ffffff"
android:layout_height="30sp"
android:layout_margin="15dp"
android:layout_columnWeight="1"/>
<EditText
android:background="#ffffff"
android:layout_height="30sp"
android:layout_margin="15dp"
android:layout_columnWeight="1"/>
<EditText
android:background="#ffffff"
android:layout_height="30sp"
android:layout_margin="15dp"
android:layout_columnWeight="1"/>
<EditText
android:background="#ffffff"
android:layout_height="30sp"
android:layout_margin="15dp"
android:layout_columnWeight="1"/>
<EditText
android:background="#ffffff"
android:layout_height="30sp"
android:layout_margin="15dp"
android:layout_columnWeight="1"/>
<EditText
android:background="#ffffff"
android:layout_height="30sp"
android:layout_margin="15dp"
android:layout_columnWeight="1"/>
</GridLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Calculate"
android:textAppearance="?android:attr/textAppearanceLarge"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Result is: "
android:textAppearance="?android:attr/textAppearanceLarge"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Result"
android:textAppearance="?android:attr/textAppearanceLarge"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="bottom">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/backButton_text"
android:id="@+id/back"
android:onClick="onClickBackButton"
android:textAppearance="?android:attr/textAppearanceLarge"/>
</LinearLayout>
</LinearLayout>
答案 0 :(得分:0)
android:layout_columnWeight仅适用于api 21或更高版本,根据您设备中的屏幕截图我猜测较低。
由于edittext没有指定宽度,并且还没有文本定义它显示为0宽度,这就是为什么你似乎没有看到它。
我建议您通过代码定义宽度和边距,以实现您在工作室屏幕截图中显示的内容:
定义gridlayout的名称,我在示例“gridlayout”中使用
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GridLayout g = (GridLayout)findViewById(R.id.gridlayout);
int screenWidth = getScreenWidth();
int cellWidth = screenWidth / 4;
int margin = cellWidth / 8;
GridLayout.LayoutParams p;
for(int i = 0; i < g.getChildCount(); i++){
p = (GridLayout.LayoutParams)g.getChildAt(i).getLayoutParams();
p.width = cellWidth;
p.setMargins(margin, margin, margin, margin);
}
}
private int getScreenWidth(){
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
return size.x;
}
它将为任何设备和任何方向设置相同的外观。
答案 1 :(得分:0)
提供 第1行和第1列
<EditText
android:background="#ffffff"
android:layout_height="30sp"
android:layout_margin="15dp"
android:layout_row="0"
android:layout_column="0" />
第1行和第2列
android:layout_row="0"
android:layout_column="1"
为每个孩子做这件事取决于行和列