防止TextView在相对布局中与下一个元素重叠

时间:2018-08-13 04:07:02

标签: android android-layout textview textwrapping

我正在如下创建标题栏,“主页”和“抽屉”图标将根据案例设置可见/消失。 如何使文本视图与“主页” /“抽屉”图标不重叠?


enter image description here

这就是我的代码所需要的,我手动将文本视图边距设置为主页和抽屉图标,但是,在隐藏主页/抽屉图标的情况下,文本仍然保持长的样子,如出现“主页”按钮。如何根据可用空间将文本视图完美地换行?

ListingTag.find_or_create_by(listing_id: listing.id, tag_id: tag.id)

5 个答案:

答案 0 :(得分:0)

替换TextView和use startOf and EndOf instead of LeftOf and rightOf

<TextView
        android:id="@+id/actionbar_title"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="105dp"
        android:layout_toRightOf="@id/actionbar_backbutton"
        android:layout_toLeftOf="@id/actionbar_homebutton"
        android:background="?attr/actionBarItemBackground"
        android:ellipsize="end"
        android:gravity="center"
        android:maxLines="1"
        android:text="@string/Easybook_com"
        android:textColor="@color/colorBlackText"
        android:textSize="20sp" />

答案 1 :(得分:0)

您可以将TextView设置在两个按钮之间的空间中,如下所示:

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">

<ImageButton
    android:id="@+id/actionbar_backbutton"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:background="?attr/actionBarItemBackground"
    android:scaleType="centerInside"
    android:src="@drawable/ic_arrow_back_black_24dp" />

<ImageButton
    android:id="@+id/actionbar_homebutton"
    android:layout_width="?attr/actionBarSize"
    android:layout_height="match_parent"
    android:layout_toLeftOf="@+id/actionbar_drawerbutton"
    android:layout_alignParentTop="true"
    android:background="?attr/actionBarItemBackground"
    android:scaleType="centerInside"
    android:src="@drawable/ic_home_black" />

<ImageButton
    android:id="@+id/actionbar_drawerbutton"
    android:layout_width="?attr/actionBarSize"
    android:layout_height="match_parent"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:background="?attr/actionBarItemBackground"
    android:scaleType="centerInside"
    android:src="@drawable/ic_drawer" />

<TextView
    android:id="@+id/actionbar_title"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="105dp"
    android:layout_toRightOf="@id/actionbar_backbutton"
    android:layout_toLeftOf="@id/actionbar_homebutton"
    android:background="?attr/actionBarItemBackground"
    android:ellipsize="end"
    android:gravity="center"
    android:maxLines="1"
    android:text="@string/Easybook_com"
    android:textColor="@color/colorBlackText"
    android:textSize="20sp" />

</RelativeLayout>

答案 2 :(得分:0)

在TextView中同时使用startOf,leftOf和endOf,rightOf。

android:layout_toRightOf="@id/actionbar_backbutton"
android:layout_toStartOf="@id/actionbar_backbutton"
android:layout_toLeftOf="@id/actionbar_homebutton"
android:layout_toEndOf="@id/actionbar_homebutton"

答案 3 :(得分:0)

我认为您正在使其变得更加复杂。您也可以像这样执行您的需求,您与活动xml无关。

现在,在您活动的onCreate中:

setTitle("Your Title");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

然后,为菜单实现这两个默认方法,

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_view, menu);
return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
    case android.R.id.home:
        onBackPressed();
        break;
    case R.id. actionbar_drawerbutton:
        //your code
        break;
    case R.id. actionbar_reddot:
    //your code
    break;
    }
return super.onOptionsItemSelected(item);
}

现在您必须像这样在res/menu/menu_view.xml中创建一个xml文件,

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">

<item
        android:title="Drawer Button"
        android:id="@+id/actionbar_drawerbutton"
        android:icon="@drawable/ic_menu_camera"
        app:showAsAction="always">
</item>
<item
        android:title="Red Dot"
        android:id="@+id/actionbar_reddot"
        android:icon="@drawable/ic_favorite"
        app:showAsAction="always">
</item>

</menu>

这将处理您的所有案件。尝试这个。我相信您会获得更好的输出。

答案 4 :(得分:0)

尝试一下。

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


    <ImageButton
        android:id="@+id/actionbar_backbutton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="?attr/actionBarItemBackground"
        android:scaleType="centerInside"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:src="@drawable/ic_arrow_back_black_24dp" />

    <TextView
        android:id="@+id/actionbar_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"
        android:background="?attr/actionBarItemBackground"
        android:ellipsize="end"
        android:gravity="center"
        android:maxLines="1"
        android:layout_toRightOf="@id/actionbar_backbutton"
        android:text="@string/Easybook_com"
        android:textColor="@color/colorPrimaryDark"
        android:textSize="20sp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="right"
        android:layout_toRightOf="@+id/actionbar_title"
        android:orientation="horizontal">

        <ImageButton
            android:id="@+id/actionbar_homebutton"
            android:layout_width="?attr/actionBarSize"
            android:layout_height="wrap_content"
            android:background="?attr/actionBarItemBackground"
            android:scaleType="centerInside"
            android:src="@drawable/ic_home_black" />

        <ImageButton
            android:id="@+id/actionbar_drawerbutton"
            android:layout_width="?attr/actionBarSize"
            android:layout_height="wrap_content"
            android:background="?attr/actionBarItemBackground"
            android:scaleType="centerInside"
            android:src="@drawable/ic_drawer" />

        <ImageView
            android:id="@+id/actionbar_reddot"
            android:layout_width="?attr/actionBarSize"
            android:layout_height="wrap_content"
            android:background="?attr/actionBarItemBackground"
            android:scaleType="centerInside" />
    </LinearLayout>


</RelativeLayout>