Android和布局

时间:2010-06-07 15:39:32

标签: android android-layout

我需要在视图上找到文字:

text'更多文字'应位于bottom | center_horizo​​ntal

文本“短文本”应位于右对齐位置,但距离屏幕顶部约10%

text'x.x.x.x'应与屏幕中心对齐(第一个四分之一的右/底对齐)

text'some long text ..'应该与屏幕的3-rd quater的顶部/左边对齐,但它应该穿过屏幕的center_horizo​​ntal。

2 个答案:

答案 0 :(得分:7)

这里有几个快速指南:

  1. Android Layouts往往比你通常期望的嵌套得更深。您经常会得到“空”布局,只占用空间,以便其他元素正确布局。
  2. 只要您将文字与特定边缘对齐,RelativeLayout就是您的朋友。
  3. 使用填充设置将文本“稍微远离”边缘。
  4. 重力对齐TextView或按钮中的文本。
  5. 再看一下我的图表,我这样再现:

    1. 从占据整个屏幕的相对布局('fill_content')开始。
    2. 通过锚定到顶部和底部来输入“短文本”和“更多文本”。
    3. 在中间放置一个带有属性“centerInParent”的零宽度项目  屏幕。
    4. 将剩余部分放在上面的项目上并与该中心点对齐。
    5. 不幸的是,第4步中没有任何内容正常工作。当引用的项目是centerInParent项时,没有像“layout_below”那样工作。相对布局到第3步。原来它与顶层的fill_content失败有关。是的,布局很棘手,我希望有一个调试器。

      这是正确的版本:

      <?xml version="1.0" encoding="utf-8"?>
      <RelativeLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/r1"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent">
      <TextView
          android:id="@+id/short_text"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:text="Short Text"
          android:gravity="right"
          android:layout_marginTop="30dip"
          android:layout_alignParentTop="true" />
      <TextView
          android:id="@+id/more_text"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:text="Some More Text"
          android:gravity="center"
          android:layout_alignParentBottom="true" />
        <TextView android:id="@+id/centerpoint"
          android:layout_centerInParent="true"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:width="0dip"
          android:height="0dip"
          />
        <TextView android:id="@+id/run_fox"
          android:text="Run, fox, run!"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_above="@id/centerpoint"
          android:layout_toLeftOf="@id/centerpoint" 
          />
      <TextView
          android:layout_below="@id/centerpoint"
          android:text="The quick brown fox jumped over the lazy dog, who had been a frog, and then got features and ran slowly."
          android:layout_alignRight="@id/centerpoint"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          />
       </RelativeLayout>
      

答案 1 :(得分:0)

如果我理解正确,你只想在文本视图中添加一些字符串。您可以在XML中执行此操作。一个方便的GUI工具是DroidDraw您可以在浏览器或桌面上运行它。我发现一些GUI的东西很方便。除此之外你可以画一个视图,像这样...

   class DrawOnTop extends View { 
    public DrawOnTop(Context context) { 
            super(context); 
            // TODO Auto-generated constructor stub 
    } 
    @Override 
    public void onDraw(Canvas canvas) { 
        Paint paint = new Paint(); 
            paint.setStyle(Paint.Style.FILL); 
            paint.setColor(Color.RED);
            paint.setTextSize(15);
            Paint paint2 = new Paint();
            canvas.drawText("Test", 30, 30, paint);
    } 
} 

在上面的例子中,我定义了一个新的颜料。这是为了设置文本的属性。我给它一个红色和文本大小15.你也可以添加更多的属性。我还画了一个字符串“Test”。在坐标(30,30)处,这些是我希望Java绘制它的x和y坐标。然后使用paint的属性。

编辑:此页面也可能有所帮助http://developer.android.com/reference/android/graphics/Canvas.html