【问题标题】:ImageButton not visible on Android Studio on Emulator or physical deviceImageButton 在模拟器或物理设备上的 Android Studio 上不可见
【发布时间】:2017-10-01 04:06:14
【问题描述】:

你好伟大的社区。我是 Android 新手,正在尝试构建一个计算器,这是我第一次遇到这个问题,不知道出了什么问题。我添加了buttons,它们在模拟器上看起来很好,除了image button。代码如下,希望能得到帮助。

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:paddingTop="10dp"
        android:weightSum="4">

        <Button
            android:id="@+id/button16"
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:layout_weight="1"
            android:background="#00000000"
            android:text="7"
            android:textColor="@android:color/background_dark"
            android:textSize="30sp"/>

        <Button
            android:id="@+id/button5"
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:layout_weight="1"
            android:background="#00000000"
            android:text="8"
            android:textColor="@android:color/background_dark"
            android:textSize="30sp"/>

        <Button
            android:id="@+id/button4"
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:layout_weight="1"
            android:background="#00000000"
            android:text="9"
            android:textColor="@android:color/background_dark"
            android:textSize="30sp"/>

        <ImageButton
            android:id="@+id/imageButton"
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:layout_weight="1"
            android:background="#00000000"
            android:textColor="@android:color/background_dark"
            app:srcCompat="@drawable/divide"/>
    </LinearLayout>

最后一个除法按钮不可见,我添加了四个这样的线性布局,分别是 1、2、3、减号、4、5、6、乘法按钮,所有这些乘法、除法、加号和减号buttons 都没有不幸的是,看不到。 我刚刚开始,希望知道我哪里错了,我需要解决什么问题。

更新

请参阅我附上的上图。在模拟器中这个可见的ViewsButtons,如果我将它们更改为ImageButtonviews 就像等号一样。我已经更改了我的 png's 文件,但我无法理解我做错了什么

谢谢

【问题讨论】:

  • 这段代码在我身边工作可能是你的svg图片有问题
  • 我猜你是对的,我将这些更改为普通按钮,效果很好,图像按钮在背景更改时也可以正常工作,寻找其他图像以查看是否修复,谢谢跨度>
  • 你在用什么 svg 或 png 文件来保存图片@Pankaj
  • 它们是 png。我刚刚自己创建了新的 png 并尝试再次添加图像按钮,但是当它显示在屏幕上时,它在模拟器或物理设备上仍然不可见。可能是什么原因?
  • app:srcCompat="@drawable/divide"/&gt;的位置尝试android:src="@drawable/divide"/&gt;

标签: android calculator


【解决方案1】:

我已经解决了这个问题,现在正在运行,因为我只将一行更改为您的每个 ImageButtonandroid:src="@drawable/equalsymbol" 而不是 app:srcCompat="@drawable/equalsymbol",我已经在评论部分向您提到了这一点

请参阅下面的屏幕截图-:

编辑

现在,问题是为什么app.srcCompat 不起作用

这是因为你有 extend 你的 MainAcyivity.javaActivity

你必须 ExtendAppCompatActivity

并且需要更新您的gradle.build

您必须添加以下行 -:

vectorDrawables {
      useSupportLibrary = true
    }

查看详细解答here

然后,我再次对您的应用进行一些更改

更改 1

MainActivity.java

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
  }
}

更改 2

style.xml

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
    <!-- Customize your theme here. -->
    <!--<item name="android:colorPrimary">@color/colorPrimary</item>-->
    <!--<item name="android:colorPrimaryDark">@color/colorPrimaryDark</item>-->
    <!--<item name="android:colorAccent">@color/colorAccent</item>-->
</style>

变化3

build.gradle

 android {
  defaultConfig {
    vectorDrawables {
      useSupportLibrary = true
    }
  }
}

现在,您可以在应用中使用app:srcCompat="@drawable/equalsymbol"

看,下面的第二个屏幕截图我使用了app:srcCompat,现在可以使用了

现在,一切正常。

因此,请按照上述方式进行更改。快乐编码

【讨论】:

  • 你简直就是天才 Vikas,它确实奏效了,看到所有答案都不起作用,我在网上搜索是徒劳的,你是天使,再次感谢你。
  • 我既不是天才也不是天使......人......很高兴它对你有用......快乐编码
  • 再次感谢您 Vikas,您真棒又善良!
  • 哈哈哈...欢迎@PankajDhawan 顺便说一句,我也来自德里。
  • 伙计,我面临挑战,但我有兴趣学习这个 Android 东西。我不知道从哪里开始,因为 YouTube 对我来说太快了,而且我听不懂。买了 Udemy 的课程,因为我的工作由于时间限制不能让我学习,但我真的想更流利。有什么提示或建议吗?另外,我真的很想亲自见到你以感谢你,像你这样的人肯定值得款待,因为感谢是不够的 :)
【解决方案2】:

如果使用权重,则使用 0dp 的宽度(或垂直 LinearLayout 的高度)。

android:layout_width = "0dp"
android:layout_height ="80dp"
android:layout_weight ="1"

【讨论】:

  • 感谢 Nabin,但这并没有奏效。它将按钮进一步向左移动,但没有显示图像按钮。
  • 您是否对行中的所有 4 个按钮都这样做了?
  • 是的,Nabin,我只是按照你的建议重试了。在 activity_main 的蓝图中,我看到所有按钮都带有白色边框并且它们是可见的,但是这些图像按钮带有灰色边框并且它们都是不可见的。我还附上了它在模拟器和工作室上的外观图片。
  • 您在 ImageButton 中使用了android:background ="#00000000",这意味着透明背景。尝试不同的颜色,看看发生了什么。此外,您的图像可能很小。在 ImageButton 中使用 scaleType fitCenter
  • 按照你的建议,我将背景的十六进制代码更改为#006699,它得到了蓝色框,至少显示了一些东西,但没有显示分隔符号。您认为可绘制图像有问题还是与它有关
【解决方案3】:

你是否在你的 Java 类中声明了这个按钮,你的 Drawable 也有 png 格式的文件,这是处理 img 文件的最佳方式。

【讨论】:

  • 我还没有进入 java 类,我的图像按钮在物理设备或模拟器的布局中不可见。您认为在 MainActivity.java 中声明可能有帮助吗?
猜你喜欢
  • 2021-05-15
  • 2020-10-24
  • 2015-08-29
  • 2021-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多