这是我的自定义对话框,有一些文本框和两个按钮。 我正在使用RelativeLayout。
我希望对话框大小与内容相匹配,而不是那里的所有空白区域。 我不想使用明确的像素高度(这不是好习惯)。
另一方面,有一种方法可以在每个视图之间留出一些空间吗?
这是我的XML
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:id="@+id/txt_desc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="8pt"
android:textStyle="italic" />
<TextView
android:id="@+id/txt_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_below="@+id/txt_desc"
android:textSize="8pt" />
<TextView
android:id="@+id/txt_place"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_below="@+id/txt_date"
android:textSize="8pt" />
<Button
android:id="@+id/btn_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@+id/txt_place"
android:layout_toRightOf="@+id/view"
android:text="@string/btn_close" />
<View
android:id="@+id/view"
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_centerHorizontal="true" />
<Button
android:id="@+id/btn_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/txt_place"
android:layout_toLeftOf="@+id/view"
android:drawableLeft="@android:drawable/ic_menu_edit"
android:text="@string/btn_edit" />
</RelativeLayout>
答案 0 :(得分:4)
第一个问题
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
第二个问题
如果你想将View与Top分开5 dp,请使用android:marginTop =“5dp”。 marginLeft |右|底部也可用。
<TextView
android:id="@+id/txt_place"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="5dp" <-----------------
android:layout_below="@+id/txt_date"
android:textSize="8pt" />
顺便说一句,如果我是你,我会嵌套一些布局来制作秩序。您可以拥有一般的相对布局,然后是2个线性布局:一个水平用于TextViews,一个垂直用于按钮。您可以定义与编辑器一起玩,并尝试为对话框创建最佳外观。
修改强>
试试这个:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#0000"
android:orientation="vertical"
android:paddingBottom="50dp" >
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/txt_desc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="prova"
android:textSize="8pt"
android:textStyle="italic" />
<TextView
android:id="@+id/txt_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="prova"
android:textSize="8pt" />
<TextView
android:id="@+id/txt_place"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="prova"
android:textSize="8pt" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<Button
android:id="@+id/btn_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableLeft="@android:drawable/ic_menu_edit"
android:text="btn_edit" />
<Button
android:id="@+id/btn_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="btn_close" />
<View
android:id="@+id/view"
android:layout_width="0dp"
android:layout_height="1dp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
我对文本进行了硬编码。主要的想法是在后台使用一个大容器布局,这是一个trasparent(background=#0000
),并在包含你的Views的wrap_content中的布局顶部。
如果此解决方案无法解决您的问题,我认为您可以直接在代码中编辑高度。尝试与this question
相关联答案 1 :(得分:0)
将相对布局的高度设置为wrap_content
。
例如:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- More XML -->
</RelativeLayout>
另请注意,fill_parent
的宽度和高度已弃用。
您可以分别使用android:layout_margin
或android:padding
添加边距(视图外部的额外空间)或填充(视图内的额外空间)。还有一些变体,例如layout_marginTop
,仅适用于视图的特定一面。