【问题标题】:Button not displayed on emulator or on Device按钮未显示在模拟器或设备上
【发布时间】:2013-12-26 23:21:47
【问题描述】:

我是 Android 的初学者。我创建了 2 个活动。第一个活动有 1 个按钮(比如 Button1)和 1 个 TextView(比如 TextView1),第二个活动有 1 个 TextView(比如 TextView2)。第一个活动中TextView 的文本值为“Hello World!”,当按下Button1 时打开第二个Activity,传递TextView1 的值(即“地狱世界!”)。第二个Activity将得到的值赋给TextView2并显示。

所有这些都运行良好。

当我在第一个活动中添加一个新的Button(比如Button2)并编写一个onClick() 方法以将TextView1 的文本从“Hello World!”更改为到“你好安卓!”反之亦然。现在,当我在我的设备或模拟器上运行它时,我看不到这个添加的按钮 (Button2),当我单击 Button1 时,它仍然可以正常工作,但我看不到 Button2

谁能帮我解决这个问题?

XML 布局:MainActivity

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:text="@string/hello_world" />

<Button
    android:id="@+id/ourButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignRight="@+id/textView"
    android:layout_below="@+id/textView"
    android:layout_marginRight="37dp"
    android:onClick="buttonClick"
    android:text="@string/button_string" />

<Button
    android:id="@+id/ourButton2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/textView"
    android:layout_below="@+id/textView"
    android:layout_marginLeft="50dp"
    android:focusable="false"
    android:onClick="buttonClick2"
    android:text="@string/button_string2" />

</RelativeLayout>

【问题讨论】:

  • 请在问题中添加相关布局和代码。
  • 请在添加第二个按钮之前/之后发布xml布局
  • 这里是第一个Activity(主Activity)的XML布局
  • 你的两个按钮重叠
  • 添加按钮前后的区别只是在上面的XML布局中添加了第二个

标签: android android-layout android-emulator android-view android-button


【解决方案1】:

这是因为你有两次android:layout_below="@+id/textView"。试试这个:

<!-- below the previous view : ourButton -->
<Button
android:id="@+id/ourButton2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/textView"
android:layout_below="@id/ourButton"
android:layout_marginLeft="50dp"
android:focusable="false"
android:onClick="buttonClick2"
android:text="@string/button_string2" />

另外,不要使用@+id/ 来对齐您的布局。添加id 时可以正确使用它,但创建id 时,您只需将android:layout_toLeftOf="@id/prevId"@id 对齐即可。


例子:

这里的布局:

                         |---- text -----|
                                           <- both are below text
                         |---- view1 ----|| <- view align right
     view align left -> ||---- view2 ----| 

如您所见,左右对齐位于 TextView 的“边框”上,因为您在 TextView 下方设置了对齐。所以它看起来像这样:

                       |------ text ------|
                                           <- both are below text
  view1 align left -> ||---- view 1&2 ----|| <- view2 align right  

您的观点相互重叠。如果你想让文本下方的两个按钮并排,尝试添加一个容器,如下所示:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal|center_vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/textView"
        android:gravity="center_horizontal"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/ourButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="50dp"
            android:onClick="buttonClick"
            android:text="@string/button_string" />

        <Button
            android:id="@+id/ourButton2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="buttonClick2"
            android:text="@string/button_string2" />

    </LinearLayout>

</RelativeLayout>

希望这会有所帮助。

【讨论】:

  • 我做了以下更改,我可以看到第二个按钮在 TextView 下方的位置,并在图形显示中留给 Button1...但是当我在设备上调整它时,我只能看到 Button1
  • 我尝试了更多更改,现在将这个 Button2 放在 TextView 上方。我可以在 Eclipse 的图形布局上看到 Button2 的位置变化。但是当我在设备上运行它时,我得到的应用程序就像以前添加 Button2 之前一样(即它下面的 TextView 和 Button1)
  • 如果您希望按钮并排放置,请尝试添加 LinearLayout、RelativeLayout 等容器。试试我的示例,看看是否发生了变化。
  • @Gabriel 另一个会干扰您的布局的是 TextView 的 centerHorizo​​ntalcenterVertical。如果需要将子视图居中,则应将RelativeLayout 的gravity 设为center。如果您有预期的结果,请告诉我。
【解决方案2】:
      <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:paddingBottom="@dimen/activity_vertical_margin"
          android:paddingLeft="@dimen/activity_horizontal_margin"
          android:paddingRight="@dimen/activity_horizontal_margin"
          android:paddingTop="@dimen/activity_vertical_margin"
          tools:context=".MainActivity" >

    <TextView
         android:id="@+id/textView"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_centerHorizontal="true"
         android:layout_centerVertical="true"
         android:text="@string/hello_world" />

    <Button
         android:id="@+id/ourButton"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignRight="@+id/textView"
         android:layout_below="@+id/textView"
         android:layout_marginRight="37dp"
         android:onClick="buttonClick"
         android:text="@string/button_string" />

    <Button
         android:id="@+id/ourButton2"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_below="@+id/ourButton"
         android:layout_marginLeft="50dp"
         android:focusable="false"
         android:onClick="buttonClick2"
         android:text="@string/button_string2" />

  </RelativeLayout>

【讨论】:

    【解决方案3】:

    请尝试删除

        android:layout_marginRight="37dp"
    

    然后尝试。你能看到 xml 图形布局的输出吗?当我在我的 xml 上尝试此操作时,我可以在图形布局中看到(我使用了您在问题中提到的相同代码)。

    【讨论】:

      【解决方案4】:
      // try this way
      <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:paddingBottom="@dimen/activity_vertical_margin"
          android:paddingLeft="@dimen/activity_horizontal_margin"
          android:paddingRight="@dimen/activity_horizontal_margin"
          android:paddingTop="@dimen/activity_vertical_margin"
          android:orientation="vertical"
          android:gravity="center"
          android:padding="5dp"
          tools:context=".MainActivity" >
      
          <TextView
              android:id="@+id/textView"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="@string/hello_world" />
      
          <LinearLayout
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:layout_marginTop="10dp">
          <Button
              android:id="@+id/ourButton"
              android:layout_width="0dp"
              android:layout_weight="1"
              android:layout_height="wrap_content"
              android:onClick="buttonClick"
              android:layout_marginRight="5dp"
              android:text="@string/button_string" />
      
          <Button
              android:id="@+id/ourButton2"
              android:layout_width="0dp"
              android:layout_weight="1"
              android:layout_height="wrap_content"
              android:focusable="false"
              android:onClick="buttonClick2"
              android:text="@string/button_string2" />
          </LinearLayout>
      </LinearLayout>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-14
        • 1970-01-01
        • 2018-11-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多