3

我需要在视图中找到文本:

text 'Some more text' 应该位于底部|center_horizo​​ntal

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

文本“xxxx”应与屏幕中心对齐(第一季度的右/下对齐)

text 'Some long text ..' 应该与屏幕的第三个四分之一的顶部/左侧对齐,但它应该穿过屏幕的 center_horizo​​ntal。

4

2 回答 2

7

这里有几个快速指南:

  1. Android 布局的嵌套往往比您通常预期的要深得多。您通常会得到“空”布局,这些布局只占用空间,以便其他元素正确布局。
  2. 每当您将文本与特定边缘对齐时,RelativeLayout 都是您的朋友。
  3. 使用填充设置将文本“稍微远离”边缘。
  4. Gravity 会在该 TextView 或按钮中对齐文本。

再次查看您的图表,我以这种方式复制了它:

  1. 从占据整个屏幕的相对布局('fill_content')开始。
  2. 通过锚定到顶部和底部来输入“短文本”和“更多文本”。
  3. 为屏幕中间的一个点放置一个具有“centerInParent”属性的零宽度项目。
  4. 将剩余的放在上面的项目中并与该中心点对齐。

不幸的是,第 4 步中的任何内容都无法正常工作。当引用的项目是 centerInParent 项目时,没有像“layout_below”这样的工作。与第 3 步的相对布局。原来它与未能在顶层填充内容有关。是的,布局很棘手,我希望有一个调试器。

这是正确的版本:

<?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>
于 2010-06-07T16:20:29.717 回答
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 坐标。然后它使用油漆的属性。

编辑:这个页面也可能有一些帮助http://developer.android.com/reference/android/graphics/Canvas.html

于 2010-06-07T16:22:11.353 回答