Android 最全控件背景状态颜色圆角设置处理,页卡处理


 做项目的时候总会遇到一些问题,比如布局中某个布局的背景设置成圆角,下面来看看:drawable-hdpi下面建一个xml,例如linearlayout.xml

1.设置白色背景、灰色边框、倒圆角:

<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?>  
<shape xmlns:android="http://schemas.android.com/apk/res/android">    
    <solid android:color="#ffffff" />  
    <stroke  
        android:width="0.01dp"         
        android:color="#bfbfbf" />  
    <corners android:topLeftRadius="10dp"   
                    android:topRightRadius="10dp"    
                android:bottomRightRadius="10dp"   
                android:bottomLeftRadius="10dp"/>    
</shape> </span>


在布局文件中写:


<span style="font-size:18px;"><LinearLayout 
      android:orientation="vertical"
      android:layout_width="0dp"
      android:layout_height="90dip"
      android:layout_weight="10"
      
      android:background="@drawable/linearlayout"
     ></span>

2.RadioButton背景圆角的处理,完整代码,良心操作


对于一个控件上下左右都为圆角的处理和一半圆角一半矩形的处理时类似的:

直接上代码,布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <include layout="@layout/header"></include>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="60dp"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:gravity="center"
            android:orientation="horizontal">

            <!--<LinearLayout-->
                <!--android:id="@+id/ll_begin"-->
                <!--android:layout_width="0dp"-->
                <!--android:layout_weight="1"-->
                <!--android:gravity="center"-->
                <!--android:orientation="vertical"-->
                <!--android:layout_height="match_parent">-->

                <!--<Button-->
                    <!--android:id="@+id/bt_begin"-->
                    <!--android:layout_width="fill_parent"-->
                    <!--android:layout_height="40dp"-->
                    <!--android:layout_centerInParent="true"-->
                    <!--android:textColor="#ffffff"-->
                    <!--android:background="@drawable/btn_selector_another_left2"-->
                    <!--android:text="进行中" />-->
            <!--</LinearLayout>-->

            <!--<LinearLayout-->
                <!--android:id="@+id/ll_end"-->
                <!--android:layout_width="0dp"-->
                <!--android:layout_weight="1"-->
                <!--android:gravity="center"-->
                <!--android:orientation="vertical"-->
                <!--android:layout_height="match_parent">-->

                <!--<Button-->
                    <!--android:id="@+id/bt_end"-->
                    <!--android:layout_width="fill_parent"-->
                    <!--android:layout_height="40dp"-->
                    <!--android:layout_centerInParent="true"-->
                    <!--android:layout_gravity="center"-->
                    <!--android:background="@drawable/btn_selector_another2"-->
                    <!--android:text="已结束" />-->
            <!--</LinearLayout>-->

            <RadioGroup
                android:id="@+id/radiogroup_select_huodong"
                android:layout_width="match_parent"
                android:layout_height="80px"
                android:gravity="center"
                android:layout_gravity="center"
                android:orientation="horizontal">

                <RadioButton
                    android:id="@+id/radiobtn_begin"
                    android:layout_width="0dp"
                    android:layout_weight="1"
                    android:layout_margin="0dp"
                    android:layout_height="70px"
                    android:layout_marginRight="40px"
                    android:background="@drawable/selector_huodong_select"
                    android:button="@null"
                    android:paddingLeft="1dp"
                    android:checked="true"
                    android:gravity="center"
                    android:text="进行中"
                    android:textColor="@color/bg_huodong_button_click" />

                <RadioButton
                    android:id="@+id/radiobtn_end"
                    android:layout_width="0dp"
                    android:layout_weight="1"
                    android:layout_margin="0dp"
                    android:layout_height="70px"
                    android:background="@drawable/selector_huodong_select2"
                    android:button="@null"
                    android:layout_marginRight="5dp"
                    android:gravity="center"
                    android:text="已结束"
                    android:textColor="@color/bg_huodong_button_click" />
            </RadioGroup>



        </LinearLayout>
        <android.support.v4.view.ViewPager
            android:id="@+id/vp_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"></android.support.v4.view.ViewPager>


    </LinearLayout>

</LinearLayout>

主函数:

import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.example.lgy.myviewpagerapplication.R;
import com.example.lgy.myviewpagerapplication.message.ViewPagerAdapter;

import java.util.ArrayList;
import java.util.List;

public class HuoDongActivity extends AppCompatActivity implements View.OnClickListener,ViewPager.OnPageChangeListener{

    private Button bt_begin,bt_end;
    private ViewPager viewPager;
    private List<View> vp_View_List = new ArrayList<View>();
    private ViewPagerAdapter vp_adapter;
    private TextView header_title_two;
    private Button bt_last;
    private LinearLayout ll_last;
    private LinearLayout ll_begin,ll_end;
    private RadioGroup radioGroup;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_huo_dong);

        init();
        initViewList();//里面的界面需放在逻辑之前,而不是逻辑里面
        initData();
    }

    /**
     * 添加对应的界面
     */
    private void initViewList() {
        //添加activity或Fragment都可以,也可以直接添加布局
//        Intent intent = new Intent(this, OfficialMessageActivity.class);
//        vp_View_List.add(getView("A", intent));
//        Intent intent2 = new Intent(this, PersonalMessageActivity.class);
//        vp_View_List.add(getView("B", intent2));

        //直接添加布局,方便逻辑在一个类里操作
        View view_by_official = getLayoutInflater().inflate(R.layout.activity_official_message, null);
        vp_View_List.add(view_by_official);

        View view_by_personal = getLayoutInflater().inflate(R.layout.activity_personal_message, null);
        vp_View_List.add(view_by_personal);

    }
    private void initData() {


        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {

                switch (checkedId) {
                    case R.id.radiobtn_begin:

                        viewPager.setCurrentItem(0);
                        break;
                    case R.id.radiobtn_end:

                        viewPager.setCurrentItem(1);
                        break;
                }
            }
        });
        vp_adapter = new ViewPagerAdapter(vp_View_List);
        viewPager.setAdapter(vp_adapter);

    }

    private void init() {

        viewPager = (ViewPager) findViewById(R.id.vp_view);
        header_title_two = (TextView) findViewById(R.id.header_title_two);//标题
        header_title_two.setText("活动");
        viewPager.setOnPageChangeListener(this);

        radioGroup = (RadioGroup) findViewById(R.id.radiogroup_select_huodong);
    }

    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

    }

    @Override
    public void onPageSelected(int position) {

//        LinearLayout ll_current = null;
//        Button bt_current = null;
        if(radioGroup!=null && radioGroup.getChildCount()>position){
            ((RadioButton)radioGroup.getChildAt(position)).performClick();
        }
//        switch (position) {
//            case 0:
//                //为控件赋值
                bt_current = bt_begin;
                ll_current = ll_begin;
//                break;
//            case 1:
                bt_current = bt_end;
                ll_current = ll_end;
//
//                break;
//            default:
//                break;
//        }
//        setCurrent(ll_current,bt_current);
    }

    @Override
    public void onPageScrollStateChanged(int state) {

    }

    @Override
    public void onClick(View v) {

//        switch (v.getId()) {
//            case R.id.bt_begin:
//                viewPager.setCurrentItem(0);
//                break;
//            case R.id.bt_end:
//                viewPager.setCurrentItem(1);
                Toast.makeText(this,"aaa",Toast.LENGTH_LONG).show();
//                break;
//            default:
//                break;
//        }
    }
    /**
     * 为控件赋值
     */
    private void initCurrent() {
        bt_last = bt_begin;
        ll_last = ll_begin;
    }
    /**
     * 改变控件和背景色
     * @param bt_current
     */
//    private void setCurrent(LinearLayout ll_last,Button bt_current) {
//        bt_last.setTextColor(getResources().getColor(R.color.color_white_real));
//        ll_last.setBackgroundResource(R.drawable.btn_selector_another3);
//
//        bt_begin.setTextColor(getResources().getColor(R.color.tab_text_p));
//        bt_begin.setBackgroundResource(R.drawable.btn_selector_another3);
//        bt_last = bt_current;
//    }
}

selector_huodong_select.xml  左边的背景处理

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 默认时的背景 -->
<item android:drawable="@drawable/btn_selector_another_left3" android:state_checked="false"/>
<!-- 选择时的背景 -->
<item android:drawable="@drawable/btn_selector_another_left2" android:state_checked="true"/>
</selector>

btn_selector_another_left3.xml    左边背景的进一步处理,可以设置上下左右圆角和颜色,未选中状态

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Button正常状态下的背景 -->
    <item>
        <shape>
            <!-- 矩形的圆角弧度 -->
            <corners android:bottomLeftRadius="5dp" android:bottomRightRadius="0dp" android:topLeftRadius="5dp" android:topRightRadius="0dp" />
            <!-- 矩形的填充色 -->
            <solid android:color="#ffffff" />
            <padding android:bottom="2dp" android:left="2dp" android:right="0dp" android:top="0dp" />
            <!-- 矩形的边框的宽度,每段虚线的长度,和两段虚线之间的颜色和颜色 -->
            <stroke android:width="1dp" android:color="#4eb621" />
        </shape>
    </item>
    <item android:state_pressed="true">
        <shape>
            <!--内边距-->
            <padding android:bottom="2dp" android:left="2dp" android:right="0dp" android:top="0dp" />
            <!-- 矩形的圆角弧度 -->
            <corners android:bottomLeftRadius="20dp" android:topLeftRadius="20dp" />
            <!-- 矩形的填充色 -->
            <solid android:color="#3F51B5" />
            <!-- 矩形的边框的宽度,每段虚线的长度,和两段虚线之间的颜色和颜色 -->
            <stroke android:width="1dp" android:color="#4eb621" />
        </shape>
    </item>
</selector>
btn_selector_another_left2.xml    选中状态

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Button正常状态下的背景 -->
    <item>
        <shape>
            <!-- 矩形的圆角弧度 -->
            <corners android:bottomLeftRadius="5dp" android:bottomRightRadius="0dp" android:topLeftRadius="5dp" android:topRightRadius="0dp" />
            <!-- 矩形的填充色 -->
            <solid android:color="#FF4081" />
            <padding android:bottom="2dp" android:left="2dp" android:right="0dp" android:top="0dp" />
            <!-- 矩形的边框的宽度,每段虚线的长度,和两段虚线之间的颜色和颜色 -->
            <stroke android:width="1dp" android:color="#4eb621" />
        </shape>
    </item>
    <item android:state_pressed="true">
        <shape>
            <!--内边距-->
            <padding android:bottom="2dp" android:left="2dp" android:right="0dp" android:top="0dp" />
            <!-- 矩形的圆角弧度 -->
            <corners android:bottomLeftRadius="20dp" android:topLeftRadius="20dp" />
            <!-- 矩形的填充色 -->
            <solid android:color="#3F51B5" />
            <!-- 矩形的边框的宽度,每段虚线的长度,和两段虚线之间的颜色和颜色 -->
            <stroke android:width="1dp" android:color="#4eb621" />
        </shape>
    </item>
</selector>

bg_huodong_button_click.xml   字体颜色处理

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:color="@color/white"/>
    <!-- not selected -->
    <item android:color="@color/color_black"/>
</selector>
selector_huodong_select2.xml 右边控件背景的处理

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 默认时的背景 -->
<item android:drawable="@drawable/btn_selector_another2" android:state_checked="false"/>
<!-- 选择时的背景 -->
<item android:drawable="@drawable/btn_selector_another3" android:state_checked="true"/>
</selector>
btn_selector_another2.xml  右边控件的背景进一步处理,未选中状态


<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Button正常状态下的背景 -->
    <item>
        <shape>
            <!-- 矩形的圆角弧度 -->
            <corners android:bottomLeftRadius="0dp" android:bottomRightRadius="5dp" android:topLeftRadius="0dp" android:topRightRadius="5dp" />
            <!-- 矩形的填充色 -->
            <solid android:color="#ffffff" />
            <padding android:bottom="2dp" android:left="2dp" android:right="0dp" android:top="0dp" />
            <!-- 矩形的边框的宽度,每段虚线的长度,和两段虚线之间的颜色和颜色 -->
            <stroke android:width="1dp" android:color="#4eb621" />
        </shape>
    </item>
    <item android:state_pressed="true">
        <shape>
            <!--内边距-->
            <padding android:bottom="2dp" android:left="2dp" android:right="0dp" android:top="0dp" />
            <!-- 矩形的圆角弧度 -->
            <corners android:bottomLeftRadius="20dp" android:topLeftRadius="20dp" />
            <!-- 矩形的填充色 -->
            <solid android:color="#3F51B5" />
            <!-- 矩形的边框的宽度,每段虚线的长度,和两段虚线之间的颜色和颜色 -->
            <stroke android:width="1dp" android:color="#4eb621" />
        </shape>
    </item>
</selector>

btn_selector_another3.xml     右边控件的背景进一步处理,选中状态

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Button正常状态下的背景 -->
    <item>
        <shape>
            <!-- 矩形的圆角弧度 -->
            <corners android:bottomLeftRadius="0dp" android:bottomRightRadius="5dp" android:topLeftRadius="0dp" android:topRightRadius="5dp" />
            <!-- 矩形的填充色 -->
            <solid android:color="#FF4081" />
            <padding android:bottom="2dp" android:left="2dp" android:right="0dp" android:top="0dp" />
            <!-- 矩形的边框的宽度,每段虚线的长度,和两段虚线之间的颜色和颜色 -->
            <stroke android:width="1dp" android:color="#4eb621" />
        </shape>
    </item>
    <item android:state_pressed="true">
        <shape>
            <!--内边距-->
            <padding android:bottom="2dp" android:left="2dp" android:right="0dp" android:top="0dp" />
            <!-- 矩形的圆角弧度 -->
            <corners android:bottomLeftRadius="20dp" android:topLeftRadius="20dp" />
            <!-- 矩形的填充色 -->
            <solid android:color="#3F51B5" />
            <!-- 矩形的边框的宽度,每段虚线的长度,和两段虚线之间的颜色和颜色 -->
            <stroke android:width="1dp" android:color="#4eb621" />
        </shape>
    </item>
</selector>

颜色:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#3F51B5</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#FF4081</color>
    <color name="red_bg">#E7333C</color>
    <color name="white">#FFFFFFFF</color>
    <color name="header_line">#c82904</color>
    <color name="color_resume_input_bg">#cbd6e7</color>
    <color name="tab_text_n">#313131</color>
    <color name="tab_text_p">#E5313A</color>
    <color name="color_mine_text_click">#D9D9D9</color>
    <color name="color_text_tip">#F45D3D</color>
    <color name="color_black">#000000</color>
    <color name="color_white_real">#FFFFFF</color>
    <color name="color_mine_gray_text">#999999</color>
    <color name="color_home_back">#F0F0F0</color>
    <color name="colo_bg_login">#F7F7F7</color>
    <color name="list_item_focus">#0a000000</color>
    <color name="white_alpha_percent_45">#73ffffff</color>
    <color name="text_gray">#7b403b37</color>
    <color name="base_red">#fffb6655</color>
    <color name="default_line_color">#e6e6e6</color>
</resources>

3.也可以实现下图的圆倒角,使用selector和shape:




后续会上源码

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值