如何创建没有边框的ImageButton(只是图像应该可见)?可以通过设置imageButton.setBackgroundDrawable(null)
来实现此目的,但这也会消除焦点和选择颜色。
目标是最初只能看到没有边框的图像。但是当用户聚焦/触摸/点击图像时,应通过高亮显示图像来指示,如常规按钮。
首选API 14的Java代码解决方案。谢谢!
答案 0 :(得分:13)
如前所述,API11及更高版本的默认主题中内置的borderlessButtonStyle
是实现此效果的最简单方法。您提到使用Java代码而不是XML创建按钮,因此根据您需要应用样式的方式,有两个选项。
选项#1:将其添加到主题
如果应用中的所有Button
或ImageButton
实例(或至少在活动中)都需要应用此样式,请将样式添加到主题中:
<resources>
<style name="AppTheme" parent="android:Theme.Holo.Light">
<!-- Default style for ImageButtons -->
<item name="android:imageButtonStyle">?android:borderlessButtonStyle</item>
<!-- Default style for Buttons -->
<item name="android:buttonStyle">?android:borderlessButtonStyle</item>
</style>
</resources>
将此主题应用于您的应用程序或活动,您不必声明每个元素的样式,您只需将它们声明为
Button button = new Button(context);
ImageButton imageButton = new ImageButton(context);
样式将从主题中拉出。
选项#2:在构造函数中声明它
如果只需要通过这种方式设置几个按钮,您可以将要直接应用的样式属性传递给每个视图,如下所示:
Button button = new Button(context, null, android.R.attr.borderlessButtonStyle);
ImageButton imageButton = new ImageButton(context, null, android.R.attr.borderlessButtonStyle);
此版本为要使用的窗口小部件提供了不同的默认样式属性。
答案 1 :(得分:7)
将 borderlessButtonStyle 用于ImageButton
<ImageButton
style="?android:borderlessButtonStyle"
android:layout_width="58dp"
android:layout_height="wrap_content"
android:contentDescription="Delete"
android:src="@android:drawable/ic_delete" />
答案 2 :(得分:6)
使用selector作为背景,如下所示:
<强> /res/drawable/my_selector.xml 强>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/my_drawable" />
<item android:drawable="@android:color/transparent" />
</selector>
my_drawable
是您想要的任何可绘制边框。
然后是您的ImageButton
<ImageButton
android:layout_height="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/my_selector"
android:src="@drawable/your_bitmap" />
your_bitmap
是您的实际形象。
答案 3 :(得分:3)
你的回答是在Nick Butcher和Roman Nurik谈论Google I / O 2013关于UI开发者的android设计。
Min:31:40:
https://www.youtube.com/watch?v=Jl3-lzlzOJI#t=31m40s
这种方法的唯一问题是{1}可用于API 11及更高版本,因此如果您希望在11之前的任何API上使用相同的行为,那么您将不得不坚持使用选择器。
顺便说一句,我强烈建议你观看整个演讲,因为它非常有趣。
答案 4 :(得分:0)
你必须添加
imageButton.setClickable(true);
imageButton.setFocusable(true);
它会起作用......
这就是xml文件中的方式:
android:clickable="true"
android:focusable="true"
希望这个帮助
答案 5 :(得分:0)
我希望这会对你有所帮助。请将背景透明为
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/facebookbuttonanimation"
android:background="#00000000"
/>
答案 6 :(得分:0)
您可以为点击/未点击状态设计不同的图像,并在onTouchListener中设置它们,如this SO帖子的选定答案所示。
然后,您可以将照片设置回长片后点击上一张图片,或点击。