2014-10-16 127 views
0

我目前在Android中有對齊文字(左對齊&右)的問題... 我想製作一張如下格式的收據。在Android中對齊文字左右對齊

納希Putih                               RM 1.00

納希番茄                      RM 1.20

椰漿Hujan帕納斯      RM 1.50

總價:                          RM 3.70

下面是我的代碼:

 if(nsPutih==true) 
     { 

      tvOutput1.setText("Nasi Putih RM 1.00"); 
      tvOutput1.setVisibility(View.VISIBLE); 

      price+=1; 
     } 
     else 
     { 
      tvOutput1.setVisibility(View.GONE); 
     } 

     if (nsTomato==true) 
     { 
      tvOutput2.setText("Nasi Tomato RM 1.20"); 
      tvOutput2.setVisibility(View.VISIBLE); 
      price+=1.2; 
     } 
     else 
     { 
      tvOutput2.setVisibility(View.GONE); 
     } 

     if(nsHjanPanas==true) 
     { 
      tvOutput3.setText("Nasi Hujan Panas RM 1.50"); 
      tvOutput3.setVisibility(View.VISIBLE); 
      price+=1.5; 
     } 
     else 
     { 
      tvOutput3.setVisibility(View.GONE); 
     } 

我希望收據像IN IN TABLE這樣很好地對齊(方式是,所有這些Nasi元素都左對齊並且價格是右對齊的。)請幫助我!

下面是xml的代碼。

<?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="match_parent" 
android:padding="40dp" > 

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

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



<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/textB" 
    android:layout_below="@+id/textB" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 

<TextView 
    android:id="@+id/textView2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignRight="@+id/textView1" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 

<TextView 
    android:id="@+id/textView3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/textView2" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 



    </LinearLayout> 


    </ScrollView></RelativeLayout> 
+0

對於'價格'你必須使用不同的'TextViews'。像列一樣對齊文本。第一個用於「文本」,第二個用於「Rs.」 – user370305 2014-10-16 20:16:56

+0

您沒有指定任何layoutParams。在xml中創建佈局要容易得多。你可以使用GridView(這是我會做的),但你也可以使用一個TableView或LinearLayouts的組合使用垂直LinearLayout與一些嵌套的水平LinearLayouts。如果您確實有用XML定義的佈局,請將其發佈。 – kenodoggy 2014-10-16 20:26:18

+0

分別使用兩個texfields ...名稱和成本...更精確地使用Table Layout ... – Exceptional 2014-10-17 06:33:05

回答

0

您的XML,您需要添加兩行textview,一個爲Nasi元素和另一個爲價格元素。

嘗試這樣的事情,

<?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="match_parent" 
    android:padding="40dp" > 

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

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

      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginBottom="10dp" 
       android:orientation="horizontal" 
       android:weightSum="2" > 

       <TextView 
        android:id="@+id/textView1" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:textAppearance="?android:attr/textAppearanceMedium" /> 

       <TextView 
        android:id="@+id/textView2" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:textAppearance="?android:attr/textAppearanceMedium" /> 
      </LinearLayout> 

      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginBottom="10dp" 
       android:orientation="horizontal" 
       android:weightSum="2" > 

       <TextView 
        android:id="@+id/textView3" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:textAppearance="?android:attr/textAppearanceMedium" /> 

       <TextView 
        android:id="@+id/textView4" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:textAppearance="?android:attr/textAppearanceMedium" /> 
      </LinearLayout> 

      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginBottom="10dp" 
       android:orientation="horizontal" 
       android:weightSum="2" > 

       <TextView 
        android:id="@+id/textView5" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:textAppearance="?android:attr/textAppearanceMedium" /> 

       <TextView 
        android:id="@+id/textView6" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:textAppearance="?android:attr/textAppearanceMedium" /> 
      </LinearLayout> 
     </LinearLayout> 
    </ScrollView> 

</RelativeLayout> 

,改變你的java代碼以匹配XML設置的小部件的名稱。像下面這樣的東西,只需要注意並在必要時進行必要的更改。

if(nsPutih==true) 
     { 

      tvOutput1.setText("Nasi Putih"); 
      tvOutput2.setText("RM 1.00"); 
      tvOutput1.setVisibility(View.VISIBLE); 
      tvOutput2.setVisibility(View.VISIBLE); 

      price+=1; 
     } 
     else 
     { 
      tvOutput1.setVisibility(View.GONE); 
      tvOutput2.setVisibility(View.GONE); 
     } 

     if (nsTomato==true) 
     { 
      tvOutput3.setText("Nasi Tomato"); 
      tvOutput3.setVisibility(View.VISIBLE); 
      tvOutput4.setText("RM 1.20"); 
      tvOutput4.setVisibility(View.VISIBLE); 

      price+=1.2; 
     } 
     else 
     { 
      tvOutput3.setVisibility(View.GONE); 
      tvOutput4.setVisibility(View.GONE); 
     } 

     if(nsHjanPanas==true) 
     { 
      tvOutput5.setText("Nasi Hujan Panas"); 
      tvOutput5.setVisibility(View.VISIBLE); 
      tvOutput6.setText("RM 1.50"); 
      tvOutput6.setVisibility(View.VISIBLE) 

      price+=1.5; 
     } 
     else 
     { 
      tvOutput5.setVisibility(View.GONE); 
      tvOutput6.setVisibility(View.GONE); 
     } 

我希望它有幫助。對代碼仍有疑問,請在下面評論。

0

codePG的answer不會對齊右側的項目。這將會:

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

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"/> 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="end"/> 
</LinearLayout>