自定义Button实现百分比宽度

自定义Button实现百分比宽度

大家都知道,在平常写布局的时候,有时候并不能确定Button的宽度。有时候会很难办,那时候想,如果能给这个Button设置屏幕的百分比就好了。下面我就带大家以Button为例写一个以手机屏幕为宽度的为基准,设置百分比的宽度。

推荐个薅羊毛交流群,帮助大家日常赚点零花钱 364739778,不要指望这个发财哦

首先第一步,需要你在valuse下的attr.xml文件下拷贝一下自定义属性文字

"YButton">"percentWidthB" format="fraction" />```
我们来自定义一个YButton继承系统的Button
package com.small.deer.View.BaseView;import android.app.Activity;
import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Gravity;
import android.view.ViewGroup;
import android.view.ViewParent;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;import com.small.deer.R;
import com.small.deer.Utils.AppUtils;/*** author MaYang. 自定义百分比的button* 2016/12/10 14:35*/
public class YButton extends Button {private float mFraction;public YButton(Context context) {this(context, null);}public YButton(Context context, AttributeSet attrs) {this(context, attrs, 0);}public YButton(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.YButton);// 默认文字居中setGravity(Gravity.CENTER);// 默认可点击setClickable(true);if (typedArray != null) {// 得到自定义属性的值mFraction = typedArray.getFraction(R.styleable.YButton_percentWidthB, 1, 2, 0);}}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {super.onMeasure(widthMeasureSpec, heightMeasureSpec);         ViewGroup.LayoutParams params = (ViewGroup.LayoutParams) getLayoutParams();int screenWidth = getScreenWidth(getContext());int width = (int) (screenWidth * mFraction);// 设置控件的宽度params.width = width;setLayoutParams(params);}/*** 获得屏幕高度** @param context* @return*/public  int getScreenWidth(Context context) {WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);DisplayMetrics outMetrics = new DisplayMetrics();wm.getDefaultDisplay().getMetrics(outMetrics);return outMetrics.widthPixels;}
}

在布局中直接用即可,但是需要把引用布局的跟布局添加xmlns:app=”http://schemas.android.com/apk/res-auto”
app:percentWidthB=”30%”设置屏幕的百分比距离。

<com.small.deer.View.BaseView.YButtonandroid:id="@+id/btn_map_search"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:layout_margin="@dimen/x12"android:background="@color/global_color"android:padding="@dimen/x12"android:text="自定义百分比Button"android:textColor="@color/white"app:percentWidthB="30%" />

好了,代码很简单,赶快去体验一把 吧


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部