我在一个简单的页面上使用Android LinearLayout,其中我从一个AXML文件中为纵向和横向模式添加了1个ImageView和1个GridView。
我希望在横向模式下所有项目都排成一行,而在纵向模式下,gridvew将减少到第二行。
我该如何解决。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/imageView2"
android:layout_width="300dp"
android:layout_height="100dp"
android:src="@drawable/TESTIMAGEGOF"
android:layout_marginBottom="1dp" />
<GridView
android:layout_width="300dp"
android:layout_height="100dp"
android:columnWidth="75dp"
android:numColumns="auto_fit"
android:verticalSpacing="2dp"
android:horizontalSpacing="2dp"
android:stretchMode="spacingWidthUniform"
android:id="@+id/gridView1" />
</LinearLayout>
答案 0 :(得分:0)
您必须在 res 文件夹中创建 2 文件夹,其名称为: layout , layout-land 并在这2个文件夹中创建同名的 xml 文件,对于布局,请使用以下代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/imageView2"
android:layout_width="300dp"
android:layout_height="100dp"
android:src="@drawable/TESTIMAGEGOF"
android:layout_marginBottom="1dp" />
<GridView
android:layout_width="300dp"
android:layout_height="100dp"
android:columnWidth="75dp"
android:numColumns="auto_fit"
android:verticalSpacing="2dp"
android:horizontalSpacing="2dp"
android:stretchMode="spacingWidthUniform"
android:id="@+id/gridView1" />
</LinearLayout>
并在布局-土地文件夹文件中,使用以下代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/imageView2"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/TESTIMAGEGOF"
android:layout_marginBottom="1dp" />
<GridView
android:layout_width="0dp"
android:layout_height="100dp"
android:layout_weight="1"
android:columnWidth="75dp"
android:numColumns="auto_fit"
android:verticalSpacing="2dp"
android:horizontalSpacing="2dp"
android:stretchMode="spacingWidthUniform"
android:id="@+id/gridView1" />
</LinearLayout>
答案 1 :(得分:0)
要在一种布局中进行设置,必须使用Java代码解决此问题,您应该执行2步:
1-您必须使用Java检查设备的方向:
if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE){
}
2-在LinearLayout中设置方向,请尝试以下代码:
LinearLayout layout = /* ... */;
layout.setOrientation(LinearLayout.VERTICAL);
您可以使用此技术。
答案 2 :(得分:0)
哦...你在xamarin工作。
在xamarin中检查方向是否垂直:
private double width = 0;
private double height = 0;
protected override void OnSizeAllocated(double width, double height)
{
base.OnSizeAllocated(width, height); //must be called
if (this.width != width || this.height != height)
{
this.width = width;
this.height = height;
if(width > height){
//device is landscape
}
}
}
并在LinearLayout中使用设置方向:
LinearLayout LLMain = new LinearLayout(this);
LLMain.Orientation = Orientation.Horizontal;