0

我有一个小问题。

我正在创建一个自定义按钮小部件

<?xml version="1.0" encoding="utf-8"?>

<Button
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/barBtn"
    android:layout_width="wrap_content"
    android:layout_height="32dp"
    android:layout_marginLeft="8dp"
    android:layout_marginRight="8dp"
    android:textColor="@color/white"
    android:background="@drawable/sel_btn_bar"
    android:layout_centerVertical="true"
/>

然后我将它放入RelativeLayout

<RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
    <ImageView
            android:layout_height="wrap_content"
            android:layout_width="fill_parent"
            android:scaleType="fitXY"
            android:src="@drawable/bar"/>
    <include layout="@layout/segm_btn_stores"/>

        <include
                layout="@layout/btn_bar"
                android:layout_alignParentRight="true"/>
</RelativeLayout>

但是 align 在我放置可以随意移动的include标签之前不起作用。RelativeLayout但是这种方法会产生另一个问题:按钮会比在外面时更窄RelativeLayout。我能做些什么?我想在一个地方设置按钮参数。

是的,我可以添加这一行:android:layout_alignParentRight="true"标记Button,它会工作!

所以问题是:为什么它适用于Button标签而不适用于include标签?

更新

按钮和片段布局在那里

4

2 回答 2

1

我认为该android:layout_centerVertical属性(对于您的Button布局)仅在 a中有效RelativeLayout(至少它记录在RelativeLayout.LayoutParams文档中:http: //developer.android.com/reference/android/widget/RelativeLayout.LayoutParams.html),因此我不会不要指望它可以在,比如说,a 中工作LinearLayout

至于按钮内部比外部窄的情况RelativeLayout,我真的不知道该说什么。鉴于您提供的 XML 片段,您似乎RelativeLayout是文档根目录,<include ... />即将标签移出它会生成非法 XML,因此编译错误(如果使用 Eclipse)。

我实际上更喜欢在自定义样式中定义按钮主题,然后您可以在应用程序全局样式 xml 中进行设置,例如:

<resources>
    <style name="my_custom_style" parent="android:style/Theme.NoTitleBar">
        <item name="android:buttonStyle">@style/my_button_style</item>
    </style>

    <style name="my_button_style" parent="@android:style/Widget.Button">
        <item name="android:gravity">center_vertical|center_horizontal</item>
        <item name="android:background">@drawable/my_button_background</item>
        <item name="android:focusable">true</item>
        <item name="android:clickable">true</item>
        <item name="android:textColor">@color/my_custom_red_color</item>
        <item name="android:textStyle">bold</item>
        <item name="android:textSize">11sp</item>
    </style>
</resources>

然后在 中设置自定义样式AndroidManifest.xml,如下所示:

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/application_title"
    android:theme="@style/my_custom_style">

    <!-- Your Activities, Services etc goes here -->

</application>
于 2012-06-18T19:16:45.217 回答
0

我很困惑你的问题是什么。你想把你的观点从相对布局中移开吗?如果您进行布局,您的视图将必须属于一个 ViewGroup。对齐不起作用,因为您的视图位于定义该属性“RelativeLayout”的 ViewGroup 之外

于 2012-06-18T19:04:33.217 回答