ScrollView的两个孩子?

时间:2010-08-10 01:00:09

标签: android android-widget

我正在尝试创建一个非常简单的应用程序(我的学习程序的一部分),垂直导向,顶部有一个 EditText ,它接收一个URL,两个按钮并排放在那个旁边根据输入的网址(例如 .html .png )说“获取图片”或“获取文字”。生成的元素可能会被稍后用于真实应用程序。

我知道 ScrollView 只能有一个孩子。从概念上讲,我希望屏幕的其余部分是一个垂直方向的内容区域,用于显示URL的文本( TextView )和单击“获取文本”或图像( ImageView < / em>)如果是图像并点击了“获取图像”。

我尝试在 main.xml 中执行此操作(伪代码):

<LinearLayout>
  <EditText />         --where to type the URL
  <Button />           --click to treat URL as text
  <Button />           --click to treat URL as image
  <FrameLayout>        --(used to be ScrollView)
    <LinearLayout>
      <TextView />     --content region occupied by either text
      <ImageView />    --or an image (but not both)
    </LinearLayout>
  </FrameLayout>
</LinearLayout>

为了不违反独生子女的要求。然而,这不起作用,现在我找不到任何样本,这些都可以让我了解如何最好地实现这一目标。我在调试时得到的最后一个抱怨是:

  

引起:   java.lang.ClassCastException:   android.widget.TextView

如果有人有时间和耐心引导我走向一些有用的方向,我会非常感激。

谢谢,

Russ Bateman

2 个答案:

答案 0 :(得分:0)

“不起作用”是什么意思?

您能为异常提供完整的stacktrace / logcat输出吗?

我没有看到你勾勒出的xml有什么问题。我假设您将其中一个或另一个的可见性设置为GONE,具体取决于您要显示的内容?

由于您希望TextView和ImageView在彼此之上,因此您可能会考虑使用FrameLayout而不是LinearLayout。

编辑: 您的logcat表示您在Download类的第33行上有ClassCastException。这意味着您正在尝试将非TextView的内容转换为TextView。也许你正在抓住错误的UI元素?没有看到代码很难说。

答案 1 :(得分:0)

你的xml中有两个具有相同id的元素,这只是无法工作,它是一个id。

final TextView  textView   = ( TextView ) findViewById( R.id.content );
final ImageView imageView  = ( ImageView )findViewById( R.id.content );

您必须将它们区分为textcontent和imagecontent。