android 图片文字布局,Android自定义控件图片+文字布局

本来想用Tabrow来布局一组上面是图片下面是文字说明的控件,可是发现Tabrow不像想象的那样简易,并且这几组之间的控件距离很差把握,在网上找了两种方法以供参照。html

方法1、利用RadioButton巧妙的实现布局

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center"

android:orientation="vertical">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center"

android:button="@null"

android:drawableTop="@drawable/vibrator48"

android:text="测试" />

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:button="@null"

android:drawableTop="@drawable/vibrator"

android:text="测试" />

利用RadioButton的配置参数drawableTop实现文字和图片的布局,固然还能够用drawablepadding来设置图片和文字的距离。相似的控件还有TextView、ChexBox等。可是好像他对太大的图片时,下面的文字不能居中显示。java

5dd3aa2db5a0e414e1cb6bd51370a296.png

方法2、自定义控件

自定义控件是Android中玩得比较高级的一种思路,能够把布局作的很炫,可是实现起来天然会没有方法一那么方便。android

一、写布局文件

写一个图片和文字框的布局文件image_text_button.xml.推荐调试时将资源文件写进去,方便布局调试。ide

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:alpha="20"

android:orientation="vertical">

android:id="@+id/img"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center"

android:src="@drawable/vibrator"

android:scaleType="centerInside"

android:paddingBottom="2dip"/>

android:id="@+id/text"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center"

android:text="测试"/>

3fac488392501b56dc5d39cd68f6614e.png

二、对应布局文件写一个类

写一个对应布局文件的类,这个类继承LinearLayout的ImageTextButton.java布局

package com.example.test;

import android.content.Context;

import android.util.AttributeSet;

import android.view.LayoutInflater;

import android.widget.ImageView;

import android.widget.LinearLayout;

import android.widget.TextView;

public class ImageTextButton extends LinearLayout {

private ImageView mImgView = null;

private TextView mTextView = null;

private Context mContext;

public ImageTextButton(Context context, AttributeSet attrs) {

super(context, attrs);

LayoutInflater.from(context).inflate(R.layout.image_text_button, this, true);

mContext = context;

mImgView = (ImageView)findViewById(R.id.img);

mTextView = (TextView)findViewById(R.id.text);

}

/*设置图片接口*/

public void setImageResource(int resId){

mImgView.setImageResource(resId);

}

/*设置文字接口*/

public void setText(String str){

mTextView.setText(str);

}

/*设置文字大小*/

public void setTextSize(float size){

mTextView.setTextSize(size);

}

}

三、将自定义控件应用到布局文件中

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center"

android:orientation="horizontal" >

android:id="@+id/itbTest"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_horizontal" />

android:id="@+id/itbTest"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_horizontal" />

android:id="@+id/itbTest"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_horizontal" />

fcb1a261423d39093a818ce8810c5622.png

四、在Activity引用自定义控件

public class MainActivity extends Activity implements OnClickListener{

ImageView imageView;

Animation animation;

private long speed = 1200;

private ImageTextButton itbTest;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Log.i("jobschu", "onCreate");

itbTest = (ImageTextButton)findViewById(R.id.itbTest);

itbTest.setImageResource(R.drawable.vibrator);

itbTest.setText("测试");

itbTest.setTextSize(10);

itbTest.setOnClickListener(this);

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值