TextView的RelativeLayout layout_alignBottom无法正常工作

时间:2016-12-21 13:43:28

标签: android textview relativelayout

尝试通过灵活的TextView在可能高度不同的RelativeLayout容器中进行一些对齐。 似乎没有脑子,然而,它并没有在它应该的任何地方对齐。

以下简单代码:

private void setAddSubscription(Subscriber<? super String[]> subscriber) {
  //Initializing custom SQLiteOpenHelper and SQLite database
  File mFile = new File(mFolderPath);

  int booksSize = getFilesInFolder(mFile).size();
  String[] sizeList = {String.valueOf(booksSize)};
  //The first publishProgress is used to set the max of the progressbar
  subscriber.onNext(addReturnParams(String.valueOf(sizeList.length), null, null));

  for (int i = 0; i < booksSize; i++) {
    EpubReader reader = new EpubReader();
    //publishProgress with current item, current file*
    subscriber.onNext(addReturnParams(String.valueOf(sizeList.length),
            String.valueOf(i), getFilesInFolder(mFile).get(i).getName()));
    //Inserting current item in database. Code removed
  }

}

private String[] addReturnParams(String totalItems, String currentItem, String currentFile) {
  return new String[]{totalItems, currentItem, currentFile};
}

结果如下:

enter image description here

显然可以预期红色矩形将与文本垂直对齐。但事实并非如此。

出了什么问题?...

7 个答案:

答案 0 :(得分:0)

用户android:layout_below =“@ id / id”

<View
    android:layout_width="40dp"
    android:layout_height="wrap_content"
    android:layout_alignTop="@+id/t1"
  android:layout_below="@+id/t1"
    android:background="#6f00"/>

我希望它的工作

答案 1 :(得分:0)

try using the attribute "android:layout_below". For example:
...
<View android:id="@+id/v1"
    android:layout_width="10dp"
    android:layout_height="73dp"
    android:background="#300f"/>

<TextView
    android:id="@+id/t1"
    android:layout_below="@+id/v1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:text="ceterum censeo carthaginem esse delendam"/>

...

答案 2 :(得分:0)

请在下面试试。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <View android:id="@+id/some_view_id"
        android:layout_width="10dp"
        android:layout_height="73dp"
        android:background="#300f"/>

    <TextView
        android:id="@+id/t1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_below="@id/some_view_id"
        android:text="varying text view here that can \n go for multiple lines and not disturb the one below"/>

    <View
        android:layout_width="40dp"
        android:layout_height="wrap_content"
        android:layout_below="@id/t1"
        android:background="#6f00"/>
</RelativeLayout>

答案 3 :(得分:0)

尝试此代码可能会解决您的问题:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ffffff" >

<View
    android:layout_width="10dp"
    android:layout_height="73dp"
    android:background="#300f" />

<TextView
    android:id="@+id/t1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:text="ceterum censeo carthaginem esse delendam" />

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <View
        android:layout_width="10dp"
        android:layout_height="73dp"
        android:background="#6f00" />
</LinearLayout>

</RelativeLayout>

答案 4 :(得分:0)

像这样使用android:layout_toEndOf

<TextView
    android:id="@+id/t1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:text="ceterum censeo carthaginem esse delendam"/>

<View
    android:layout_width="40dp"
    android:layout_height="wrap_content"
    android:layout_toEndOf="@+id/t1"
    android:layout_alignBottom="@+id/t1"
    android:background="#6f00"/>

答案 5 :(得分:0)

它与你的相对布局高度设置为wrap_content。

来自RelativeLayout文档:

  

请注意,您不能在大小之间具有循环依赖关系   RelativeLayout及其子女的位置。例如,你   不能将RelativeLayout的高度设置为WRAP_CONTENT和a   子项设置为ALIGN_PARENT_BOTTOM。

因此,要么将高度设置为match_parent,要么更容易,就像Ahamed所写 将android:layout_centerVertical =“true”添加到红色布局

答案 6 :(得分:0)

试试这个解决方案。希望这有帮助。

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


    <View
       android:layout_width="10dp"
       android:layout_height="73dp"
       android:background="#300f"/>
    <RelativeLayout 
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:layout_centerVertical="true">

      <TextView
         android:id="@+id/t1"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="ceterum censeo carthaginem esse delendam"/>

      <View
         android:layout_width="40dp"
         android:layout_height="wrap_content"
         android:layout_alignTop="@+id/t1"
         android:layout_alignBottom="@+id/t1"
         android:background="#6f00"/>
   </RelativeLayout>

 </RelativeLayout>