我是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"
/>
答案 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)
我认为,您可以根据需要采用我的代码(添加渐变背景,删除描边等)。
布局代码:
<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);
}
});
我希望它适合你,这就是你想要的:)。