znq*_*znq 526 android text image button
我正在尝试在按钮上创建一个图像(作为背景)并动态添加,具体取决于运行时发生的情况,图像上方/上方的一些文本.
如果我使用ImageButton
我甚至没有可能添加文本.如果我使用,Button
我可以添加文本,但只定义具有此处android:drawableBottom
定义的XML属性的图像.
然而,这些属性仅在x和y维度中组合文本和图像,这意味着我可以在文本周围绘制图像,但不能在我的文本下方/下方(z轴定义为从显示中出来).
有关如何做到这一点的任何建议?一个想法是扩展Button
或ImageButton
覆盖draw()
-method.但凭借我目前的知识水平,我真的不知道如何做到这一点(2D渲染).也许有经验的人知道解决方案或至少有一些指针可以开始?
One*_*rld 599
对于只想将背景,图标 - 图像和文本放在 Button
不同文件中的用户:在Button
背景上设置,drawableTop/Bottom/Rigth/Left和填充属性.
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/home_btn_test"
android:drawableTop="@drawable/home_icon_test"
android:textColor="#FFFFFF"
android:id="@+id/ButtonTest"
android:paddingTop="32sp"
android:drawablePadding="-15sp"
android:text="this is text"></Button>
Run Code Online (Sandbox Code Playgroud)
对于更复杂的安排,您也可以使用RelativeLayout
并使其可点击.
教程:伟大的教程,涵盖这两种情况下:http://izvornikod.com/Blog/tabid/82/EntryId/8/Creating-Android-button-with-image-and-text-using-relative-layout.aspx
sch*_*gel 341
这个问题有一个更好的解决方案.
只需要正常Button
并使用drawableLeft
和gravity
属性.
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/my_btn_icon"
android:gravity="left|center_vertical" />
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您可以获得一个按钮,该按钮在按钮的左侧显示一个图标,并且图标的右侧站点的文本垂直居中.
m_v*_*aly 200
您可以调用setBackground()
a Button
来设置按钮的背景.
任何文本都将显示在背景上方.
如果你在xml中寻找类似的东西,那么:
android:background
属性的工作方式相同.
Dhi*_*a k 65
<Button
android:layout_width="0dp"
android:layout_weight="1"
android:background="@drawable/home_button"
android:drawableLeft="@android:drawable/ic_menu_edit"
android:drawablePadding="6dp"
android:gravity="left|center"
android:height="60dp"
android:padding="6dp"
android:text="AndroidDhina"
android:textColor="#000"
android:textStyle="bold" />
Run Code Online (Sandbox Code Playgroud)
Kie*_*ran 56
只需使用LinearLayout并假装它是Button
- 设置background
和可点击是关键:
<LinearLayout
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:drawable/btn_default"
android:clickable="true"
android:orientation="horizontal" >
<ImageView
android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="5dp"
android:src="@drawable/image" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_margin="5dp"
android:text="Do stuff" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
CMA*_*CMA 43
只是替换
android:background="@drawable/icon"
Run Code Online (Sandbox Code Playgroud)
同
android:background="@android:color/transparent"
android:drawableTop="@drawable/[your background image here]"
Run Code Online (Sandbox Code Playgroud)
izz是一个很好的技巧..;)
Osc*_* S. 21
我从这里提到的方法采取了不同的方法,它工作得非常好,所以我想分享它.
我正在使用Style创建一个自定义按钮,左侧是图像,右侧是文本.只需按照下面的4个"简单步骤":
I.使用至少3个不同的PNG文件和您拥有的工具创建9个补丁:/ YOUR_OWN_PATH/android-sdk-mac_x86/tools/./draw9patch.在此之后你应该:
button_normal.9.png,button_focused.9.png和button_pressed.9.png
然后下载或创建一个24x24 PNG图标.
ic_your_icon.png
将所有内容保存在Android项目的drawable /文件夹中.
II.在drawable /文件夹下的项目中创建名为button_selector.xml的XML文件.州应该是这样的:
<item android:state_pressed="true" android:drawable="@drawable/button_pressed" />
<item android:state_focused="true" android:drawable="@drawable/button_focused" />
<item android:drawable="@drawable/button_normal" />
Run Code Online (Sandbox Code Playgroud)
III.转到values /文件夹并打开或创建styles.xml文件并创建以下XML代码:
<style name="ButtonNormalText" parent="@android:style/Widget.Button">
<item name="android:textColor" >@color/black</item>
<item name="android:textSize" >12dip</item>
<item name="android:textStyle" >bold</item>
<item name="android:height" >44dip</item>
<item name="android:background" >@drawable/button_selector</item>
<item name="android:focusable" >true</item>
<item name="android:clickable" >true</item>
</style>
<style name="ButtonNormalTextWithIcon" parent="ButtonNormalText">
<item name="android:drawableLeft" >@drawable/ic_your_icon</item>
</style>
Run Code Online (Sandbox Code Playgroud)
ButtonNormalTextWithIcon是一个"子样式",因为它正在扩展ButtonNormalText("父样式").
请注意,将ButtonNormalTextWithIcon样式中的drawableLeft更改为drawableRight,drawableTop或drawableBottom,可以将图标放置在相对于文本的其他位置.
IV.转到您拥有用于UI的XML的布局/文件夹,然后转到要应用样式的Button,并使其如下所示:
<Button android:id="@+id/buttonSubmit"
android:text="@string/button_submit"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
style="@style/ButtonNormalTextWithIcon" ></Button>
Run Code Online (Sandbox Code Playgroud)
而且......瞧!你的按钮左侧有一个图像.
对我来说,这是更好的方法!因为这样做,您可以单独管理要显示的图标的按钮文本大小,并使用相同的背景可绘制几个按钮,使用不同的图标,使用样式的Android UI准则.
您还可以为应用程序创建主题并为其添加"父样式",以便所有按钮看起来都相同,并将"子样式"仅应用于您需要的图标.
小智 12
<Button android:id="@+id/imeageTextBtn"
android:layout_width="240dip"
android:layout_height="wrap_content"
android:text="Side Icon With Text Button"
android:textSize="20sp"
android:drawableLeft="@drawable/left_side_icon"
/>
Run Code Online (Sandbox Code Playgroud)
Cri*_*tan 12
MaterialButton支持设置图标并将其与文本对齐:
<com.google.android.material.button.MaterialButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="My button"
app:icon="@drawable/your_icon"
app:iconGravity="textStart"
/>
Run Code Online (Sandbox Code Playgroud)
app:iconGravity
如果您想将图标与按钮而不是其中的文本对齐,也可以是 to start
/ 。end
从1.5.0-beta01版本开始,app:iconGravity
也可以top
/ textTop
( commit )
Kal*_*i.G 11
您可以使用drawableTop
(也drawableLeft
等)图像,并通过添加图像在图像下方设置文本gravity
left|center_vertical
<Button
android:id="@+id/btn_video"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:background="@null"
android:drawableTop="@drawable/videos"
android:gravity="left|center_vertical"
android:onClick="onClickFragment"
android:text="Videos"
android:textColor="@color/white" />
Run Code Online (Sandbox Code Playgroud)
请勿
android:drawableLeft
对矢量可绘制对象使用普通等...,否则它将在较低的API版本中崩溃。(我已经在实时应用程序中遇到过)
如果使用矢量可绘制,则必须
它是在版本中发布的1.1.0-alpha01
,因此appcompat版本应该至少是1.1.0-alpha01
。当前最新版本是1.1.0-alpha02
,请使用最新版本以获得更好的可靠性,请参阅发行说明-link。
implementation 'androidx.appcompat:appcompat:1.1.0-alpha02'
使用AppCompatTextView
/ AppCompatButton
/AppCompatEditText
app:drawableLeftCompat
,app:drawableTopCompat
,app:drawableRightCompat
,app:drawableBottomCompat
,app:drawableStartCompat
和app:drawableEndCompat
如果不需要矢量可绘制,则可以
android:drawableLeft
,android:drawableRight
,android:drawableBottom
,android:drawableTop
TextView
,Button
&EditText
或AppCompat
类。您可以实现如下输出:
可能我的解决方案适合很多用户,我希望如此.
我建议你用你的风格制作TextView.它非常适合我,并且具有所有功能,例如按钮.
首先让make按钮样式,你可以在任何地方使用...我正在创建button_with_hover.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape android:shape="rectangle" >
<corners android:radius="3dip" />
<stroke android:width="1dip" android:color="#8dbab3" />
<gradient android:angle="-90" android:startColor="#48608F" android:endColor="#48608F" />
</shape>
<!--#284682;-->
<!--border-color: #223b6f;-->
</item>
<item android:state_focused="true">
<shape android:shape="rectangle" >
<corners android:radius="3dip" />
<stroke android:width="1dip" android:color="#284682" />
<solid android:color="#284682"/>
</shape>
</item>
<item >
<shape android:shape="rectangle" >
<corners android:radius="3dip" />
<stroke android:width="1dip" android:color="@color/ControlColors" />
<gradient android:angle="-90" android:startColor="@color/ControlColors" android:endColor="@color/ControlColors" />
</shape>
</item>
</selector>
Run Code Online (Sandbox Code Playgroud)
其次,让我们创建一个textview按钮.
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="20dip"
android:layout_gravity="right|bottom"
android:gravity="center"
android:padding="12dip"
android:background="@drawable/button_with_hover"
android:clickable="true"
android:drawableLeft="@android:drawable/btn_star_big_off"
android:textColor="#ffffffff"
android:text="Golden Gate" />
Run Code Online (Sandbox Code Playgroud)
这就是结果.然后使用任何颜色或任何其他属性和边距设置自定义按钮的样式.祝好运
<Button
android:id="@+id/groups_button_bg"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="Groups"
android:drawableTop="@drawable/[image]" />
android:drawableLeft
android:drawableRight
android:drawableBottom
android:drawableTop
Run Code Online (Sandbox Code Playgroud)
http://www.mokasocial.com/2010/04/create-a-button-with-an-image-and-text-android/
这段代码非常适合我
<LinearLayout
android:id="@+id/choosePhotosView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
android:clickable="true"
android:background="@drawable/transparent_button_bg_rev_selector">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/choose_photo"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@android:color/white"
android:text="@string/choose_photos_tv"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
534744 次 |
最近记录: |