2012-07-03 63 views
0

我想在我的Layout中構建這種線:Android在佈局中的定位

「Total ...................... 1000 「

我需要根據我從網絡接收的內容更改」1000「。因此我必須改變「.........」的寬度。 Word「Total」只是一個最終的TextView。如何在佈局中實現它?當手機改變爲風景「.....」(點)必須更長,我不知道如何實現它。因此,我有3個部分:TextView「Total」,TextView「....」(點)和TextView「1000」,它們可以是從1到無窮大的任何namber。如何實現它們,以便根據屏幕的大小顯示強制的「Total」和「1000」以及它們之間的「.....」?

下面的xml沒有做到這一點。

<RelativeLayout 
       android:id="@+id/statistic_layout" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_below="@+id/statistic_separator" 
       android:orientation="horizontal" 
       android:padding="15dp"> 


       <TextView android:id="@+id/published_recepies" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:textStyle="bold" 
         android:textSize="18dp" 
         android:layout_alignParentLeft="true" 
         android:textColor="@color/dark_orange" 
         android:text="Total"/> 

       <TextView android:id="@+id/dots" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:textSize="18dp" 
         android:layout_toRightOf="@+id/published_recepies" 
         android:textColor="@color/dark_orange" 
         android:text="@string/dots"/> 

       <TextView android:id="@+id/published_recepies_data" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:textSize="18dp" 
         android:layout_alignParentRight="true" 
         android:textColor="@color/dark_orange" 
         android:text="323"/>   

      </RelativeLayout> 

回答

1

試試這個,,

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="@android:color/white" > 

    <TextView 
     android:id="@+id/text" 
     android:layout_width="fill_parent" 
     android:layout_height="match_parent" 
     android:layout_gravity="center" 
     android:background="@android:color/white" 
     android:singleLine="true" 
     android:text="......................................................................................................................................................................" 
     android:textColor="#000000" 
     android:textSize="18dip" /> 

    <TextView 
     android:id="@+id/text2" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_gravity="left" 
     android:background="@android:color/white" 
     android:text="Total" 
     android:textColor="#000000" 
     android:textSize="18dip" /> 

    <TextView 
     android:id="@+id/text3" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_gravity="right" 
     android:background="@android:color/white" 
     android:text="1000" 
     android:textColor="#000000" 
     android:textSize="18dip" /> 

</FrameLayout> 

兩個小問題在我的代碼中,

1. You need to write so many dots hardcoded in layout xml file. 
2. As sometimes there is a some little portion of dots cuts on both side. 
+0

我嘗試過 - 這有效。非常感謝你 – Stas

+0

歡迎好友..!快樂編碼..!如果我爲第二個問題找到任何解決方案,我肯定會更新我的答案。 – user370305

+0

謝謝。我感謝你的幫助。 – Stas

0

水平方向LinearLayout與layout_weights相等的對象怎麼樣? 「Total」可以是wrap_content寬度,「......」可以是match_parent,「1000」可以是wrap_content。將「總數」對齊到左邊,將「1000」對齊到右邊,並且「.....」將填充另外兩個之間的剩餘空間。然而,這隻有在你做一些有點荒謬的事情時纔會起作用,比如使「......」字符串長200個點。這樣一來,一些點就不會出現在屏幕上,但至少你會在「Total」和「1000」之間看到你需要的所有點。你怎麼看?

我可以想到的唯一的其他「更復雜」的方式是每次切換方向或增加/減少數字,以像素爲單位查找屏幕寬度,找出單詞「Total」的寬度,以像素爲單位的數字的每個數字,從寬度中減去該數字,並將其除以點所佔的像素數量。這個數字應該是放在「....」字符串中的點的數量。

+0

LinearLayout中的android:layout_alignParentRight =「true」是abcent ...引力=「right」呢?可以嗎?你說什麼聽起來都很好,但我必須嘗試。 – Stas

+0

啊,是的,我的道歉;嘗試一個水平的RelativeLayout。如果這仍然失敗,那麼在一個封裝RelativeLayout中的3個TextView每個都在它們自己的LinearLayout中應該可以工作。 – Mxyk

+0

我想我已經完成了你所說的,不幸的是我沒有工作,因爲可以看到所有的點(他們的長線)。我編輯了答案,以便更具體地說話。 – Stas

1

你需要玩弄權重屬性:嘗試以下段時,下面的代碼和設計使用的按照您的要求:

<?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="horizontal" > 

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_weight="1" 
    android:background="#ffffff" > 
</LinearLayout> 

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_weight="1" 
    android:background="#ffffeabc" > 
</LinearLayout> 

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_weight="1" 
    android:background="#ffffedef" > 
</LinearLayout> 

</LinearLayout>