我的Android布局应该是什么样的?

时间:2011-09-06 21:46:20

标签: android layout view

我最近问了一个关于如何在视图顶部添加视图的问题,在询问我意识到我需要在继续进行之前为我的应用添加更好的布局。

我正在阅读Android Layout Tricks,但发现它专门针对文字视图和图片视图。我希望用两个自定义视图来做到这一点。因此,我决定在绘画中快速绘制图像,以便更清楚地显示我想要做的事情。


这就是我希望布局分割视图的方式。 :

enter image description here


这是绘制视图的外观。显然,紫色和蓝色边界将是背景颜色(灰色)。上面的数据只显示用相应颜色绘制的图形的y轴截距。 (因此会有多个图形视图相互叠加)

enter image description here

所以我的问题是,我的主要内容视图是什么样的?我假设它会有一个线性布局,但我对这些布局比较新。

修改

使用TextViews我能够使用以下XML提出类似的东西:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <TextView
            android:text="Data Placeholder"
            android:background="#733674"
            android:textSize="15pt"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="20"/>

        <TextView
            android:text="Graph Placeholder"
            android:background="#374F82"
            android:textSize="15pt"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="80"/>

    </LinearLayout>

</LinearLayout>

所以唯一真正存在的问题是,我应该使用TextViews吗?在我的Activity中的含义我可以在这些TextViews的位置添加自定义视图吗?或者我应该将自定义视图添加到XML?

    <DataView
        android:text="Data Placeholder"
        android:background="#733674"
        android:textSize="15pt"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="20"/>

    <GraphView
        android:text="Graph Placeholder"
        android:background="#374F82"
        android:textSize="15pt"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="80"/>

我的自定义视图是用Java编写的,如果我这样做,我不知道如何让布局知道视图的位置。

1 个答案:

答案 0 :(得分:1)

试试这个:http://developer.android.com/resources/tutorials/views/hello-linearlayout.html

它提供了一些非常有用的信息,可以帮助您解决在评论中提到的Michell Bak的layout_weight问题。

这是Hello Views的页面: http://developer.android.com/resources/tutorials/views/index.html

不要太粗鲁,但是仔细阅读这些并自己学习xml会好得多。这样你就可以真正理解它,并且能够更好地在以后重新创建它。

我最初对所有我不理解的代码(包括xml文件)感到非常不知所措,但通过一些练习它变得非常容易 - 只是耗费时间。

  

我最困惑的主要是放入什么样的视图   布局。在示例中,他们使用TextView或ImageView,但我的是   自定义视图

那么,对于“自定义数据视图”,您可以使用包含android:layout_width="fill_parent"android:layout_height="fill_parent"以及android:layout_weight="1"android:background="#BA4AAB"的LinearLayout(请参阅http://www.colorpicker.com/

然后,对于自定义图表视图,我会使用: android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="4" android:background="#7D4ABA"

请注意我放置的layout_weight和背景值是一种猜测,您可能需要调整一些以匹配您想要的值。

我提到的两个线性布局将位于一个较大的LinearLayout中android:orientation="vertical"

然后,对于顶部的数据,您将使用4个文本视图,在代码中,您将在这些文本视图上使用setText(...)来放入数据。

在xml for textview1中,您可以添加android:id="@+id/textview1",然后在代码中添加TextView textview1 = (TextView)findviewbyId(R.id.textview1);,然后添加textview1.setText(myString);

对于底部的图形,您将使用2个视图作为图形的基础,并将android:layout_width和android:layout_height设置为适合您使用dip,dp或px单位的任何视图。

对于您绘制的线条,我相信您必须使用带有位图的canvas类并调用canvas.drawLine(...)(请参阅http://developer.android.com/reference/android/graphics/Canvas.html