2个可拉式按钮水平,2个按钮和onclick之间没有空格,可更改可绘制按钮颜色

时间:2015-01-05 07:51:17

标签: android android-layout android-button

我是android新手。我希望水平地有两个可绘制的bg按钮。 Button1(巡航路线)和button2(巡回物品)两个按钮之间没有空格,而onClick button1,我想在button1上显示蓝色drawable(巡回路线),在button2(巡回物品)和Viceversa上显示可绘制的悬停背景。谢谢

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

<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"
    />

3 个答案:

答案 0 :(得分:1)

使用以下代码检查,您可以使用权重作为布局

<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

<?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 :(得分:1)

How it looks in my case

我认为,您可以根据需要采用我的代码(添加渐变背景,删除描边等)。

布局代码:

<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是:

<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是:

<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是:

<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>

与RadioButton类似。

答案 2 :(得分:1)

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

假设您的drawable文件夹中有2张图片说:蓝色和灰色

第一步:

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

如何?

  <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" />

第二步:

很明显,您已在两个按钮上实现了单击侦听器。只是实现这个

   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);
        }
    });       

我希望它适合你,这就是你想要的:)。