【问题标题】:Using relative layout and having a list view that starts from the centre使用相对布局并具有从中心开始的列表视图
【发布时间】:2014-02-08 08:48:13
【问题描述】:

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>

【问题讨论】:

  • 请发布您希望布局外观的屏幕截图或图片。

标签: android android-relativelayout


【解决方案1】:

您可以使用 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>

至于编辑文本的宽度,您可以使用可绘制对象(所有 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

【讨论】:

  • ListView 上的 android:layout_centerHorizo​​ntal="true" 对我不起作用。是不是因为宽度和布局是match_parent?
【解决方案2】:

你可以为每个EditText设置android:layout_weight="1",但是这个属性应该在LinearLayout中使用。你可以在你的xml中设置android:layout_centerInParent=""

【讨论】:

  • 感谢您的建议。但我没有使用线性布局。
  • 你可以在@+id/etPhone中使用android:layout_centerInParent=""。另外两个EditText在它的左右。也可以使用RelativeLayout。
【解决方案3】:

您可以尝试将此代码放在您的 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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多