LinearLayout只有一半可点击

时间:2016-08-12 09:03:01

标签: android xml layout

我有这个布局显示标题,两个关于主题的信息片段(电话和地址),以及所有这是一个包含两个按钮的线性布局。如果我点击它们的顶部,那么这两个按钮只能被点击。如果我点击底部,整个窗口选择,如果我点击按钮选择的顶部。我尝试修复整个事情的填充,但这没有帮助。我想知道我在这里做错了什么。

这是xml文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_vertical"
android:layout_margin="16dp">

<TextView
    android:id="@+id/title"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Title"
    android:textSize="22sp"
    android:textStyle="bold"
    android:textColor="@color/white"
    android:gravity="center_horizontal"
    android:paddingTop="8dp"
    android:paddingBottom="8dp"
    android:background="@color/blue_dialog"
    style="@style/BoldStyle" />

<TextView
    android:id="@+id/description"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="snippet"
    android:layout_gravity="center"
    android:textSize="16sp"
    android:maxLines = "2"
    android:minLines="1"
    android:ellipsize="end"
    android:layout_margin="8dp"
    android:textAlignment="viewStart"
    style="@style/RegularStyle"/>

<TextView
    android:id="@+id/telephone"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="snippet"
    android:layout_gravity="center"
    android:layout_centerVertical="true"
    android:textSize="16sp"
    android:layout_margin="8dp"
    android:drawableLeft="@drawable/phone"
    android:drawablePadding="8dp"
    android:gravity="center"
    android:textAlignment="viewStart"
    style="@style/RegularStyle"/>

<TextView
    android:id="@+id/address"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="snippet"
    android:layout_centerVertical="true"
    android:textSize="16sp"
    android:layout_margin="8dp"
    android:drawableLeft="@drawable/contacts"
    android:drawablePadding="8dp"
    android:layout_gravity="center"
    android:gravity="center"
    android:textAlignment="viewStart"
    style="@style/RegularStyle"/>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:gravity="center"
    android:layout_gravity="center"
    android:layout_marginBottom="16dp">

    <Button
        android:id="@+id/buttonOffers"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Offers"
        android:background="@color/blue_dialog"
        android:textAllCaps="false"
        android:layout_marginRight="8dp"
        android:textSize="18sp"
        android:padding="8dp"
        android:layout_gravity="center"
        android:textColor="@color/white"
        style="@style/BoldStyle"/>

    <Button
        android:id="@+id/buttonViewMore"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="View More"
        android:background="@color/blue_dialog"
        android:textAllCaps="false"
        android:textSize="18sp"
        android:padding="8dp"
        android:layout_gravity="center"
        android:textColor="@color/white"
        style="@style/BoldStyle"/>

</LinearLayout>

这是我的观点的基本例子。在红线下面,按钮是不可点击的。

2 个答案:

答案 0 :(得分:2)

嵌套的LinearLayout内嵌

android:layout_marginBottom="16dp">

按钮有填充。

删除marginBottom和padding - 也许这会有所帮助。

答案 1 :(得分:1)

你能简单地画一下你所拥有的东西吗?想要实现?

此外,您告诉嵌套布局将其自身相对于其父。尝试删除

android:layout_gravity="center"

来自嵌套布局。

此外,请记住以下定义:

  1. android:gravity设置其使用的View内容的重力 上。
  2. android:layout_gravity设置视图或布局的重力 它的父母。
  3. <强> @Edit

    对于您的目标,您的代码似乎合理。在包含按钮

    的嵌套LinearLayout上尝试此操作
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="horizontal">
    
        <Button
            android:id="@+id/buttonOffers"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginRight="8dp"
            android:background="@color/blue_light"
            android:text="Offers"
            android:textAllCaps="false"
            android:textColor="@color/white"
            android:textSize="18sp"/>
    
        <Button
            android:id="@+id/buttonViewMore"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:background="@color/orange"
            android:text="View More"
            android:textAllCaps="false"
            android:textColor="@color/white"
            android:textSize="18sp"/>
    
    </LinearLayout>
    

    @Edit 2

    尝试添加

    android:paddingBottom="30dp"
    

    到嵌套的LinearLayout:

    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:paddingBottom="30dp"
            android:orientation="horizontal">
    
            <Button
                android:id="@+id/buttonOffers"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_marginRight="8dp"
                android:background="@color/blue_light"
                android:text="Offers"
                android:textAllCaps="false"
                android:textColor="@color/white"
                android:textSize="18sp"/>
    
            <Button
                android:id="@+id/buttonViewMore"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:background="@color/orange"
                android:text="View More"
                android:textAllCaps="false"
                android:textColor="@color/white"
                android:textSize="18sp"/>
    
        </LinearLayout>