我希望有一个图像和一个图像,我想放一个较短的半透明视图,并在该视图中放置一个textview,最后我想要所有这些可点击的按钮显示基本点击效果。
我无法使用
<Button>
<ImageView>
<TextView/>
</ImageView>
</Button>
我可以用Clickable = true创建一个LinearLayout。但是我怎么能模仿按钮上存在的视觉按压效果呢?
更新:我添加了一张图片,展示了我希望如何看到它。认为这就像一个ImageButton(它应该具有印刷效果)
UPDATE-2:我添加了另一张显示按下效果的图片。 (与Play商店应用类似)。
答案 0 :(得分:1)
使用您选择的布局创建所需的效果,并在布局上设置样式@android:style/Widget.Button
。
此外,您可能需要在布局上调用setWillNotDraw(false)
。
答案 1 :(得分:1)
但是我怎么能模仿按钮上存在的视觉按压效果呢?
如果我没弄错的话,你可以在LinearLayout中添加android:background =“@ drawable / some_click”
some_click.xml
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:drawable="@drawable/pressed" /> <!-- pressed -->
<item
android:state_focused="true"
android:drawable="@drawable/focused" /> <!-- focused -->
<item
android:drawable="@drawable/default" /> <!-- default -->
</selector>
答案 2 :(得分:1)
创建一个包含图像和文本等的ViewGroup(例如LinearLayout / RelativeLayout / etc)。
使此ViewGroup可单击(例如,通过为其分配OnClicListener)。
为此ViewGroup指定背景 drawable。
确保此背景drawable是一个状态列表drawable: https://developer.android.com/reference/android/graphics/drawable/StateListDrawable.html http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList
将适当的drawable分配给各种状态(最重要的是state_pressed,但您也可能希望处理其他状态)。
当用户按下按钮时,将显示相应的drawable,并且将显示为ViewGroup是一个按钮(可以按下某个按钮)。
OP显示按下状态的新图像后更新:
添加一个位于图像/文本/等之上的视图,其背景具有StateListDrawable:
<RelativeLayout >
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/somerealpngfile"
...
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
...
/>
<View
android:id+"@+id/clickable_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/selectable_background"
android:clickable="true"
...
/>
</RelativeLayout>
<强> RES /抽拉/ selectable_background.xml 强>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@color/grid_state_pressed"/>
<item android:state_focused="true" android:drawable="@color/grid_state_focused"/>
<item android:drawable="@android:color/transparent"/>
</selector>
RES /值/ colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
...
<color name="grid_state_pressed">#BB7dbcd3</color>
<color name="grid_state_focused">#777dbcd3</color>
...
</resources>
其中颜色grid_state_pressed
和grid_state_focused
是半透明的(即其alpha小于255)。
当用户点击“按钮”时,带有R.id.clickable_view
的视图将处理onClick并将更改其背景颜色,从而导致图像和文字以半透明方式闪烁。