【问题标题】:Trying to set Text on an ImageButton or equivalent尝试在 ImageButton 或等效项上设置 Text
【发布时间】:2018-08-10 15:20:12
【问题描述】:

所以,我已经知道您不能在 imageButton 上放置文本,但这最终是我想要做的。我有一个多项选择类型的活动,其中有问题和 4 个答案可供点击。现在,有时答案是图像,有时是文本。将文本放在这些按钮上以获得文本答案的最佳方式是什么?

现在我唯一能想到的就是将 4 个常规按钮放在同一个位置,并根据需要使它们不可见(这可能并不难)但感觉就像我在与 android 规则作斗争,它看起来有点乏味。

有没有已知的更简单的方法来做到这一点?

谢谢

【问题讨论】:

  • 使用 radiogroup 选择答案?使用图像视图和文本视图进行选择。这是常规做法。
  • @sanjeev radiogroup 并不是我真正想要的。我在问题下方有 4 个大按钮,用户点击答案而不是检查无线电组气泡
  • 您可以动态添加图像或文本等视图,甚至可以参考此答案here的布局
  • 但是为什么是按钮?按钮通常用于执行功能或移动到不同的活动。不建议只使用按钮来选择答案,除非您想执行某些功能(也可以通过 imageview 或 textview 完成)。

标签: android android-button imagebutton


【解决方案1】:

据我了解您的情况。 你不应该硬编码你的 4 个答案。 您需要创建一个 recyclerView 来保存您的答案,其中包含两种类型的行

注意:您可以将回收限制为仅保留项目,只需使 getCount 方法返回 4;

并根据 textView 或 ImageView 的答案类型来扩充您需要的行

因此,在 ItemView 上设置一个监听器来选择答案。

就是这样 希望这对您有所帮助。

【讨论】:

    【解决方案2】:

    您可以简单地将TextView 用于文本和图像,使用setText 用于文本答案并使用.setCompoundDrawablesWithIntrinsicBounds( R.drawable.smiley, 0, 0, 0); 用于图像答案

    【讨论】:

      【解决方案3】:

      我找到了我想要的解决方案。我将使用它来将文本绘制为可绘制对象:

          ImageButton b= findViewById(R.id.imageButton);
          Bitmap bm=Bitmap.createBitmap(400, 400, Bitmap.Config.ARGB_8888);
          Canvas c = new Canvas(bm);
          Paint p = new Paint(Paint.ANTI_ALIAS_FLAG);
          p.setTextSize(48);
          Typeface font = Typeface.createFromAsset(getAssets(), "fonts/aquariusno8cg.ttf");
          p.setTypeface(font);
          c.drawText("1e2e3e4e5e6e7e8e9e",0,224,p);
          Drawable testPaint = new BitmapDrawable(getResources(),bm);
          b.setImageDrawable(testPaint);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-03
        • 2012-06-21
        • 1970-01-01
        • 1970-01-01
        • 2020-10-08
        相关资源
        最近更新 更多