layout_alignParentRight或layout_alignParentLeft是否适用于包含布局?

时间:2012-06-18 18:58:04

标签: android android-layout android-widget relativelayout

我有点问题。

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

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

但是,在我将include标记放入RelativeLayout之后,对齐无效,我可以根据需要移动它。但是这种方法产生了另一个问题:按钮比在RelativeLayout之外的更窄。我能做什么?我想在一个地方设置按钮参数。

是的,我可以添加以下这一行:android:layout_alignParentRight="true"Button代码,它会起作用!

所以问题是:为什么它适用于Button代码并且不适用于include代码?

更新

按钮和片段布局为there

2 个答案:

答案 0 :(得分:1)

我认为android:layout_centerVertical属性(针对您的Button布局)仅在RelativeLayout中有效(至少在RelativeLayout.LayoutParams文档中有记录:{{3} }),因此我不希望它工作在一个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>

答案 1 :(得分:0)

我对你的问题很困惑。你试图从相对布局中看出你的观点?如果您进行布局,您的视图将必须属于ViewGroup。对齐不起作用,因为您的视图位于定义该属性“RelativeLayout”

的ViewGroup之外