Question

In my video player i have three textviews (title , battery percentage, time). The problem is the time text getting trimmed when title text is too long. How to fix this? is there is any solution to dynamically adjust the textview length and positions? Here is my code and screenshot---

<LinearLayout
        android:id="@+id/top_panel"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="top"
        android:background="#45000000"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/title_txt"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:lines="1"
            android:text="abcdefghijklmnopqrstuvwxyz1234567"
            android:paddingLeft="5dp"
            android:textColor="#ffffff"
            android:textSize="15sp"
            android:textStyle="bold" />

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="right"
            android:orientation="horizontal" >

            <TextView
                android:id="@+id/batPer"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
               android:layout_marginRight="8dp"
                android:lines="1"
                android:text="100%"
                android:textSize="17sp"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/timetxt"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:lines="1"

                android:text="03:07AM"
                android:textColor="#ffffff"
                android:textSize="17sp"
                android:textStyle="bold" />
        </LinearLayout>
    </LinearLayout>

enter image description here

Was it helpful?

Solution

You should change LinearLayout to RelativeLayout. as well as you can assign android:ellipsize="marquee" or android:ellipsize="end" to the First title_txt

Even I had changed the width of LinearLayout containing Battery Percentage and Timer from android:layout_width="fill_parent" to android:layout_width="wrap_content"

doesn't matter your text of title increase or decrease timer and and percentage will remain at the right side.

Try With Following Code.

<RelativeLayout 
    android:id="@+id/top_panel"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="top"
    android:background="#45000000"
    android:gravity="center_vertical"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/title_txt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_toLeftOf="@+id/ll_timer_battery_perc"
        android:ellipsize="marquee"
        android:lines="1"
        android:marqueeRepeatLimit="marquee_forever"
        android:paddingLeft="5dp"
        android:text="abcdefghijklmnopqrstuvwxyz1234567"
        android:textColor="#ffffff"
        android:textSize="15sp"
        android:textStyle="bold" />

    <LinearLayout
        android:id="@+id/ll_timer_battery_perc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:gravity="right"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/batPer"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="8dp"
            android:lines="1"
            android:text="100%"
            android:textSize="17sp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/timetxt"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:lines="1"
            android:text="03:07AM"
            android:textColor="#ffffff"
            android:textSize="17sp"
            android:textStyle="bold" />
    </LinearLayout>

</RelativeLayout>

OTHER TIPS

You're using android:lines="1" which makes text get trimmed if longer than one line. You should remove this or extend to 2 lines if you want the text to fit the textview and all be displahed

Change this way by using Weight.

<LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="right"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/batPer"
            android:layout_weight=".7"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
           android:layout_marginRight="8dp"
            android:lines="1"
            android:text="100%"
            android:textSize="17sp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/timetxt"
            android:layout_weight=".3"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:lines="1"
            android:text="03:07AM"
            android:textColor="#ffffff"
            android:textSize="17sp"
            android:textStyle="bold" />
</LinearLayout>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top