【问题标题】:how can I implement non-rectangular shapes for buttons in android如何在android中为按钮实现非矩形形状
【发布时间】:2013-10-28 19:33:05
【问题描述】:

嗨,我必须意识到这种布局。它有这个布局。

我可以尝试将图标用作图像按钮,但按钮的活动状态有点像这个!

我应该如何处理这个?

【问题讨论】:

  • 这个问题太大了,无法给你一个答案。顶部的按钮很容易定位ImageButtons。棘手的是中间的圆圈。您可以为每个部分创建ImageButtons 并以编程方式将它们定位在圆圈周围,但可点击区域将重叠。所以我认为最好的方法是让所有按钮都可以点击的整个圆圈,并有一个触摸监听器来检测圆圈的哪个部分实际上被点击了。也许您可以简化并将您的问题集中在该特定部分。顺便说一句:漂亮的设计!
  • @jboi 你明白了 100%。我可以使用触摸侦听器方法显示每个按钮的两种状态吗?有什么例子吗?
  • 对于drawables的不同状态,你可以使用selectorLevelListDrawable。使用它们,您可以为不同级别的已触摸和未触摸状态定义不同的位图。使用ImageView.setLevel(...),您可以在运行时设置级别。

标签: android


【解决方案1】:

您应该使用selector,如下所示:

  1. 为按钮状态准备 2 张图片,并将其放入 res/drawable 文件夹中。

    button_normal_green.png – 默认图片按钮。

    button_pressed_yellow.png – 按下按钮时显示。

  2. 现在,在“res/drawable/”文件夹中创建一个新的 XML 文件,使用您想要的任何名称,在这种情况下,我们只需将名称命名为“new_button.xml”。该文件定义了哪个按钮状态属于哪个图像。

    <?xml version="1.0" encoding="utf-8"?>
      <selector xmlns:android="http://schemas.android.com/apk/res/android">
         <item android:drawable="@drawable/button_pressed_yellow" android:state_pressed="true" />
    
         <item android:drawable="@drawable/button_normal_green" />
      </selector>
    

3.为按钮设置背景

<ImageButton
    android:id="@+id/imageButtonSelector"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/new_button" />

看看Complete Example

【讨论】:

  • 谢谢,我的实际问题是按钮的形状,如果我使用矩形形状,要么我必须让按钮的某些部分不可点击,否则它们会重叠
  • 选择器帮助按钮如何变成非矩形?
猜你喜欢
  • 2010-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 2019-08-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多