使用相对布局并具有从中心开始的列表视图

时间:2014-02-08 08:48:13

标签: android relativelayout

Android Studio 0.4.4

您好,

我有以下布局,相对布局和横向视图。

基本上,我有3个EditText和一个Button。我想从屏幕中央显示ListView。并将EditText和Button宽度对齐到ListView的左侧。

我已设法使用dp完成此操作。但我不喜欢使用dp,因为这会影响其他屏幕密度。

我已将ListView设置为android:layout_marginLeft="250dp",然后将EditText和按钮设置为android:layout_width="250dp"

如果不使用dp作为宽度,我有什么方法可以做到这一点?这是我目前的xml。

非常感谢任何建议,

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <ListView
        android:id="@+id/lvFriends"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scrollbars="vertical"
        android:layout_marginLeft="250dp">
    </ListView>

    <EditText
        android:id="@+id/etName"
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:hint="Name"
        android:textSize="22sp"
        android:inputType="text"/>

    <EditText
        android:id="@+id/etPhone"
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:hint="Phone"
        android:textSize="22sp"
        android:inputType="phone"
        android:layout_below="@+id/etName"/>

    <EditText
        android:id="@+id/etEmail"
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:hint="Email"
        android:textSize="22sp"
        android:inputType="textEmailAddress"
        android:layout_below="@+id/etPhone"/>

    <Button
        android:id="@+id/btnAddFriend"
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:text="Add Friend"
        android:textSize="22sp"
        android:layout_marginTop="8dp"
        android:layout_below="@+id/etEmail"/>

</RelativeLayout>

3 个答案:

答案 0 :(得分:2)

您可以将layout_center ..与相对布局

一起使用
    <ListView
        android:id="@+id/lvFriends"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scrollbars="vertical"
        android:layout_centerHorizontal="true">
    </ListView>

对于编辑文本的宽度,您可以将drawable(所有dpi都不同)作为背景并使用wrap_content或只使用dp值但总是在值/维中 http://developer.android.com/guide/topics/resources/more-resources.html#Dimension
Load dimension value from res/values/dimension.xml from source code

答案 1 :(得分:1)

您可以将android:layout_weight="1"设置为每个EditText,但此属性应在LinearLayout中使用。您可以在xml中设置android:layout_centerInParent=""

答案 2 :(得分:1)

您可以尝试将此代码放在xml文件中。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TextView                   
        android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world"
        android:visibility="gone" />

   <LinearLayout 
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentLeft="true"
       android:id="@+id/linear1"

       android:orientation="vertical">

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"


        android:ems="6"

        android:inputType="textPersonName" >

        <requestFocus />
    </EditText>
     <EditText
        android:id="@+id/editText2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:ems="6"

        android:inputType="textPersonName" >

        <requestFocus />
    </EditText>
     <EditText
        android:id="@+id/editText3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:ems="6"

        android:inputType="textPersonName" >

        <requestFocus />
    </EditText>

      <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center">


    </Button>

    </LinearLayout>
      <ListView
        android:id="@+id/listView1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_centerInParent="true"
        android:layout_toRightOf="@+id/linear1"

       >
    </ListView>

</RelativeLayout>