首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >2个可绘制按钮水平放置,两个按钮之间不留空格,单击更改可绘制按钮颜色

2个可绘制按钮水平放置,两个按钮之间不留空格,单击更改可绘制按钮颜色
EN

Stack Overflow用户
提问于 2015-01-05 15:51:17
回答 3查看 413关注 0票数 0

我是android的新手。我想要两个可水平抽出的bg纽扣。button1 (旅游路线)和button2(旅游项目)没有两个按钮之间的空间,而onClick button1,我喜欢在button1上显示蓝色可绘制(旅游路线),在button2(旅游项目)上显示可绘制悬停背景,反之亦然。谢谢

这是我的布局示例。我试图创建可绘制的xml,但它不能很好地工作。

代码语言:javascript
复制
<LinearLayout
    android:id="@+id/button"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/header"
    android:layout_marginLeft="8dp"
    android:layout_marginRight="8dp"      
    android:layout_marginTop="6dp"
    android:orientation="horizontal" >

<Button
    android:layout_weight="1"
    android:id="@+id/button1"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:text="T"
    android:background="@drawable/btn"
    android:onClick="button1"

     />

 <Button
    android:layout_weight="1"
    android:id="@+id/button2"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:text="TI"
    android:background="@drawable/btn"
     android:onClick="button2"
    />

EN

回答 3

Stack Overflow用户

发布于 2015-01-05 16:37:02

检查下面的代码,你可以使用加权和进行布局

代码语言:javascript
复制
<LinearLayout
    android:id="@+id/button"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="8dp"
    android:layout_marginRight="8dp"      
    android:layout_marginTop="6dp"
    android:orientation="horizontal"
    android:weightSum="2" >

    <Button
        android:id="@+id/button1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:background="@drawable/update_bg_button"
        android:padding="0dip"
        android:text="@string/save"
        android:textColor="@drawable/button_font_color" />

    <Button
        android:id="@+id/button2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:background="@drawable/update_bg_button"
        android:padding="0dip"
        android:text="@string/clear"
        android:textColor="@drawable/button_font_color" />

</LinearLayout>

这是update_bg_button.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
 <item android:state_pressed="true"
      android:drawable="@color/button_bg_color" /> <!-- pressed -->
<item android:state_focused="true"
      android:drawable="@color/button_fg_color" /> <!-- focused -->
<item android:state_hovered="true"
      android:drawable="@color/button_fg_color"/> <!-- hovered -->
<item android:drawable="@color/button_fg_color" /> <!-- default -->

票数 1
EN

Stack Overflow用户

发布于 2015-01-05 16:44:30

我想,你可以采用我的代码来满足你的需求(添加渐变背景,删除笔触等)。

布局中的代码:

代码语言:javascript
复制
<RadioGroup
    android:layout_width="match_parent"
    android:layout_height="40dp"
    android:orientation="horizontal"
    android:paddingLeft="8dp"
    android:paddingRight="8dp">

    <RadioButton
        android:id="@+id/rbCategories"
        android:layout_width="0dp"
        android:layout_height="30dp"
        android:layout_gravity="center_vertical"
        android:layout_weight="1"
        android:background="@drawable/rb_left_bg_selector"
        android:button="@android:color/transparent"
        android:gravity="center"
        android:text="@string/tab_categories"
        android:textColor="@android:color/white"/>

    <RadioButton
        android:id="@+id/rbSort"
        android:layout_width="0dp"
        android:layout_height="30dp"
        android:layout_gravity="center_vertical"
        android:layout_weight="1"
        android:background="@drawable/rb_right_bg_selector"
        android:button="@android:color/transparent"
        android:gravity="center"
        android:text="@string/tab_sort"
        android:textColor="@android:color/white"/>
</RadioGroup>

rb_left_bg_selector.xml是:

代码语言:javascript
复制
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/rb_left_selected_bg" android:state_checked="true"/>
<item android:drawable="@drawable/rb_left_unselected_bg" android:state_checked="false"/></selector>

rb_left_selected_bg.xml是:

代码语言:javascript
复制
<shape xmlns:android="http://schemas.android.com/apk/res/android"
   android:shape="rectangle">
<solid
    android:color="@color/blue_dark"/>
<corners
    android:bottomLeftRadius="5dp"
    android:bottomRightRadius="0dp"
    android:topLeftRadius="5dp"
    android:topRightRadius="0dp"/>

rb_left_unselected_bg.xml是:

代码语言:javascript
复制
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:bottom="0dp"
    android:left="0dp"
    android:right="-1dp"
    android:top="0dp">
    <shape android:shape="rectangle">
        <stroke
            android:width="1dp"
            android:color="@color/blue_dark"/>
        <corners
            android:bottomLeftRadius="5dp"
            android:bottomRightRadius="0dp"
            android:topLeftRadius="5dp"
            android:topRightRadius="0dp"/>
        <solid android:color="@android:color/transparent"/>
    </shape>
</item>

它类似于right RadioButton。

票数 1
EN

Stack Overflow用户

发布于 2015-01-05 17:10:32

好的,让我们来做一些简单的工作:

假设您的可绘制文件夹中有两个图像,例如:蓝色和灰色

第一步:

代码语言:javascript
复制
Note: Considering first button as your default button, So set the blue image as 
      background to your first button and grey to your second button

多么?

代码语言:javascript
复制
  <Button
   android:layout_weight="1"
   android:id="@+id/button1"
   android:layout_width="0dp"
   android:layout_height="wrap_content"
   android:text="Tour Routes"
   android:background="@drawable/blue"     // set your blue image over here
   android:onClick="button1" />

 <Button
   android:layout_weight="1"
   android:id="@+id/button2"
   android:layout_width="0dp"
   android:layout_height="wrap_content"
   android:text="Tour Items"
   android:background="@drawable/grey"     // set your grey image over here
   android:onClick="button2" />

第二步:

很明显,你已经在两个按钮上实现了click listener。只需实现以下内容

代码语言:javascript
复制
   button1.setOnClickListener(new View.OnClickListener() 
    {
        @Override
        public void onClick(View v) 
        {
            // TODO Auto-generated method stub
            button1.setBackgroundResource(R.drawable.blue);
            button2.setBackgroundResource(R.drawable.grey);
        }
    });

    button2.setOnClickListener(new View.OnClickListener() 
    {
        @Override
        public void onClick(View v) 
        {
            // TODO Auto-generated method stub
            button1.setBackgroundResource(R.drawable.grey);
            button2.setBackgroundResource(R.drawable.blue);
        }
    });       

我希望它能为你工作,这就是你想要的:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27775334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档