2

Android 和整个线性/相对布局的新手。需要帮助弄清楚如何制作这个布局:

在此处输入图像描述

到目前为止我所做的是:

Linear Layout(Vertical)
---Textview ("fixpix.")
---Linear Layout (Horizontal) //first column
------Linear Layout (Vertical, weight 1) //even more nesting here
------Linear Layout (Vertical, weight 1) //even more nesting here
------Linear Layout (Vertical, weight 1) //even more nesting here
---Linear Layout (Horizontal) //last column
------Linear Layout (Vertical, weight 1) //even more nesting here
------Linear Layout (Vertical, weight 1) //even more nesting here
------Linear Layout (Vertical, weight 1) //even more nesting here
---Button ("Learn More.")

我收到很多警告称不应该嵌套权重等。我什至不确定这是否是正确的方法。有人可以建议一个更好的方法,而不是那么复杂

4

6 回答 6

5

构建中等复杂布局时的重要提示。

代替 ImageViews、TextViews 等,使用普通视图作为占位符。将每个元素的背景颜色设置为不同的颜色,包括封闭的线性/相对/框架等。这样,您可以准确地看到每个元素在做什么,并调整您的权重、“相对性”(例如 layoutToTheRightOf 等)和大小,直到布局看起来完美。然后用你想要的元素替换占位符。

如果您正在为现有布局而苦恼,请将 XML 复制/粘贴到您的文本编辑器中。执行上述操作,然后将各个元素一一复制/粘贴到它们的占位符上。您将在短时间内控制您的布局。

当然,很好地理解每个 ViewGroup 的工作原理是构建优秀 Android 应用程序的基础。

祝你好运。

于 2012-09-18T08:43:58.993 回答
1
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="top_center_text"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:drawableTop="@drawable/ic_launcher"
            android:gravity="center"
            android:text="names"
            android:textColor="@android:color/background_dark" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:drawableTop="@drawable/ic_launcher"
            android:gravity="center"
            android:text="names"
            android:textColor="@android:color/background_dark" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:drawableTop="@drawable/ic_launcher"
            android:gravity="center"
            android:text="names"
            android:textColor="@android:color/background_dark" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:drawableTop="@drawable/ic_launcher"
            android:gravity="center"
            android:text="names"
            android:textColor="@android:color/background_dark" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:drawableTop="@drawable/ic_launcher"
            android:gravity="center"
            android:text="names"
            android:textColor="@android:color/background_dark" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:drawableTop="@drawable/ic_launcher"
            android:gravity="center"
            android:text="names"
            android:textColor="@android:color/background_dark" />
    </LinearLayout>

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="top_center_text"
        android:textAppearance="?android:attr/textAppearanceLarge" />

</LinearLayout>

Below is the code that you need

于 2012-09-18T08:29:26.610 回答
1

尝试用 GridView 解决这个问题。使用它而不是 LinearLayouts 更常见:http: //developer.android.com/guide/topics/ui/layout/gridview.html

于 2012-09-18T08:19:11.197 回答
1

尝试创建“使用 ArrayAdapter 创建多列布局

*第 1 步。插入一个简单的列表视图,您可以将其转换为多列。* main.xml

<ListView android:id="@+id/mylist" android:layout_width="wrap_content" android:layout_height="wrap_content">
</ListView>

步骤 2. 创建一个行格式,将在列表中的每一行显示。(多列视图)。

文件:mylistrow.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:paddingTop="4dip"
 android:paddingBottom="6dip"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:orientation="horizontal">
 <TextView android:id="@+id/column1"
    android:gravity=”left”
     android:layout_width="50dip"
     android:layout_height="wrap_content"/>
 <TextView android:id="@+id/column2"
    android:gravity=”center”
     android:layout_width="70dip"
     android:layout_height="wrap_content"
     android:layout_weight="1"/>
 <TextView android:id="@+id/column3"
     android:gravity=”right”
     android:layout_width="60dip"
     android:layout_height="wrap_content"
       android:layout_weight="1"/>
</LinearLayout>

步骤 3. 使用 SimpleAdapter 配置到这些列的数据绑定

ListView list = (ListView) findViewById(R.id.mylist);
ArrayList<HashMap<String, String>> mylistData =
               new ArrayList<HashMap<String, String>>();

String[] columnTags = new String[] {"col1", "col2", "col3"};

int[] columnIds = new int[] {R.id.column1, R.id.column2, R.id.column3};
for(int i=0; i<3; i++)
{
HashMap<String,String> map = new HashMap<String, String>();
 //initialize row data
 for(int j=0; j<3; j++)
 {
   map.put(columnTags[j], "row”+i+”col"+j);
 }
 mylistData.add(map);
 }
 SimpleAdapter arrayAdapter =
           new SimpleAdapter(this, mylistData, R.layout.mylistrow,
                         columnTags , columnIds);
 list.setAdapter(arrayAdapter);
于 2012-09-18T08:25:27.637 回答
0

您可以使用GridLayoutTableLayout

但我会建议你使用 TableLayout。

于 2012-09-18T08:36:43.990 回答
0

考虑使用GridView

当然,这LinearLayout将解决您的问题,但始终考虑使用最佳实践或方法来开发任何东西。

你也可以使用这个

于 2012-09-18T08:26:36.367 回答