簡體   English   中英

Android對齊textview和edittext

[英]Android align textview and edittext

在下面的xml文件中。我正在嘗試對齊contents.ie,第一個textview后跟edittext,然后在下一行中進行操作。但是現在緊接着文本會相互強加如何解決此問題。

 <?xml version="1.0" encoding="utf-8"?>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:orientation="vertical" >


      <RelativeLayout
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:layout_weight="0.70" >



          <TextView
              android:id="@+id/hostname"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_alignBaseline="@+id/ip"
              android:layout_alignParentLeft="true"
              android:text="hostname" />


          <EditText
              android:id="@+id/ip"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_alignParentLeft="true"
              android:layout_alignParentTop="true"
              android:layout_marginLeft="39dp"
              android:ems="10"
              android:inputType="textEmailAddress" >

          </EditText>


   <TextView
              android:id="@+id/username"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_alignBaseline="@+id/ip"
              android:layout_alignBottom="@+id/ip"
              android:layout_alignParentLeft="true"
              android:text="Hostname" />
          <EditText
              android:id="@+id/username"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_alignLeft="@+id/editText1"
              android:layout_below="@+id/ip"
              android:layout_marginLeft="45dp"
              android:layout_marginTop="42dp"
              android:ems="10" />

           <TextView
              android:id="@+id/password"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_alignBaseline="@+id/hostname"
              android:layout_alignBottom="@+id/username"
              android:layout_alignParentLeft="true"
              android:text="Password" />
          <EditText
              android:id="@+id/password"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_below="@+id/password"
              android:layout_centerHorizontal="true"
              android:layout_marginTop="47dp"
              android:ems="10"
              android:inputType="textPassword" />


      </RelativeLayout>

  </LinearLayout>

另一種方法,對我來說效果很好,在你的xml文件中,添加一個父<LinearLayout>來指定android:orientation="horizontal"來包含你的TextViewEditText

這個父LinearLayout必須你的第一個必須指定android:orientation="vertical" LinearLayout中:

<!-- Root Layout -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" <!-- Vertical orientation -->
    android:paddingLeft="15sp"
    android:paddingRight="15sp"
    android:paddingTop="15sp"
    android:paddingBottom="15sp" >


    <!-- First Row -->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" <!-- Horizontal orientation for the row -->
        android:paddingTop="15sp">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Poids :"
            android:textSize="15sp"
            android:textStyle="bold" />
        <EditText
            android:id="@+id/btn_poids"
            android:inputType="numberDecimal"
            android:hint="Entrez votre poids"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </LinearLayout>


    <!-- Second Row -->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" <!-- Horizontal orientation for the row -->
        android:paddingTop="15sp">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Taille :"
            android:textSize="15sp"
            android:textStyle="bold" />
        <EditText
            android:id="@+id/btn_poids"
            android:inputType="numberDecimal"
            android:hint="Entrez votre taille"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </LinearLayout>


</LinearLayout>

這是結果(警告標志是因為提示和文本的硬編碼字符串......):

結果如上

我有同樣的問題試圖目標android 4.X. 我通過使用android:gravity="center_vertical"解決了它

<LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:ems="10"
            android:id="@+id/itemNameLabel"
            android:text="@string/entry_item_label"
            android:textSize="@dimen/baseTextSize"
            android:layout_weight=".15"
            android:gravity="center_vertical" />

        <EditText
            android:layout_width="0dp"
            android:layout_weight=".85"
            android:layout_height="wrap_content"
            android:inputType="textPersonName"
            android:ems="10"
            android:id="@+id/itemName"
            android:textSize="@dimen/baseTextSize"
            android:hint="Food, Video Game, etc..." />
    </LinearLayout>

您為多個視圖使用相同的ID,然后多個視圖使用相同的id使用layout_below ,這就是為什么有一些在彼此之上。 讓他們成為獨特的ids。 還有你用於某些align_left的id甚至在那里,比如editText1

簡短回答:為每個視圖使用唯一ID,並檢查對齊和定位等的引用。

你的下一個問題是你不應該嘗試像這樣分層你的觀點,有一些叫做android:hint="hint text"這就是我認為你想要的。 一旦用戶開始輸入文本,文本將隱藏,但除此之外,它就像在其上面有一個文本視圖...

這些都沒有解決我的問題。 我所做的是將android:textAlignment="center"到XML中的textView。 編輯文本默認居中。

TextViewEditText都在水平LinearLayout

將此屬性添加到EditText:

android:layout_below="@+id/hostname"

最好的方法是刪除所有textview並設置andoid:hint編輯文本。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <EditText
        android:id="@+id/ip"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:ems="10"
        android:hint="HostName"
        android:inputType="textEmailAddress" >
    </EditText>

    <EditText
        android:id="@+id/username"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="HostName" />

    <EditText
        android:id="@+id/password"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="Password"
        android:inputType="textPassword" />

</LinearLayout>

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM