2017-09-01 141 views
0

我一直在試圖讓一個GridLayout的使用工作:網格佈局改變寬度

<GridLayout 
     android:layout_width="match_parent" 
     android:layout_height="70dp"> 

     <TextView 
      android:text="sdfgh" 
      android:layout_height="wrap_content" 
      android:id="@+id/AvgGrade" 
      android:layout_row="2" 
      android:layout_column="1" 
      android:layout_rowWeight="0.2" 
      android:layout_columnWeight="0.5" 
      android:layout_gravity="fill" 
      android:textAlignment="gravity" 
      android:layout_columnSpan="1" /> 

     <TextView 
      android:text="words" 
      android:layout_height="wrap_content" 
      android:id="@+id/Totals" 
      android:layout_row="1" 
      android:layout_column="1" 
      android:textAlignment="gravity" 
      android:layout_rowWeight="0.2" 
      android:layout_columnWeight="0.5" 
      android:layout_gravity="fill" 
      android:layout_columnSpan="1" /> 

     <TextView 
      android:text="words" 
      android:layout_height="wrap_content" 
      android:id="@+id/textView3" 
      android:layout_row="2" 
      android:layout_column="0" 
      android:textAlignment="center" 
      android:layout_rowWeight="0.2" 
      android:layout_columnWeight="0.5" 
      android:layout_gravity="fill" 
      android:layout_columnSpan="1" /> 

     <TextView 
      android:text="words" 
      android:layout_height="wrap_content" 
      android:id="@+id/textView4" 
      android:layout_row="1" 
      android:layout_column="0" 
      android:layout_rowWeight="0.2" 
      android:layout_columnWeight="0.5" 
      android:layout_gravity="fill" 
      android:textAlignment="center" 
      android:layout_columnSpan="1" /> 

     <TextView 
      android:text="words" 
      android:layout_height="wrap_content" 
      android:id="@+id/TotalAvg" 
      android:layout_row="0" 
      android:layout_column="1" 
      android:textAlignment="gravity" 
      android:layout_rowWeight="0.2" 
      android:layout_columnWeight="0.5" 
      android:layout_gravity="fill" 
      android:layout_columnSpan="1" /> 

     <TextView 
      android:text="words" 
      android:layout_height="wrap_content" 
      android:id="@+id/textView6" 
      android:layout_row="0" 
      android:layout_column="0" 
      android:textAlignment="center" 
      android:layout_columnWeight="0.5" 
      android:layout_gravity="fill" 
      android:layout_columnSpan="1" /> 

    </GridLayout> 

我的問題是,什麼樣的數據是負載在第二列列的大小發生了改變,所以咯。我已經嘗試了左側和中央對齊,並沒有什麼似乎停止改變列。用戶將重複更新這些值,並且列的輕微「微動」移動看起來非常糟糕。

回答

0

經過很多挫折之後,我無法在XML佈局中找到解決方案。不過,我確實找到了一個解決方案,似乎在編程上運行得很好。

我添加了一個名爲在年底方法我在OnCreate

public void ResizeTexts(){ 
    Display display = getWindowManager().getDefaultDisplay(); 
    DisplayMetrics outMetrics = new DisplayMetrics(); 
    display.getMetrics(outMetrics); 

    float density = getResources().getDisplayMetrics().density; 
    float dpWidth = (outMetrics.widthPixels/density); 

    text1.getLayoutParams().width = (int)dpWidth; 
    text2.getLayoutParams().width = (int)dpWidth; 
    text3.getLayoutParams().width = (int)dpWidth; 
    text4.getLayoutParams().width = (int)dpWidth; 
    text5.getLayoutParams().width = (int)dpWidth; 
    text6.getLayoutParams().width = (int)dpWidth; 
} 

我適應從這個鏈接re-setting a TextView height programmatically

然後在我的XML佈局,我設置了:

<GridLayout 
    android:layout_width="match_parent" 
    android:layout_height="70dp"> 

    <TextView 
     android:text="points" 
     android:layout_height="wrap_content" 
     android:layout_width="10dp" 
     android:id="@+id/text1" 
     android:layout_row="0" 
     android:layout_column="0" 
     android:textAlignment="textEnd" 
     /> 


    <TextView 
     android:text="totals" 
     android:layout_height="wrap_content" 
     android:layout_width="10dp" 
     android:id="@+id/text2" 
     android:layout_row="1" 
     android:layout_column="0" 

     android:textAlignment="textEnd"/> 


    <TextView 
     android:text="score" 
     android:layout_height="wrap_content" 
     android:id="@+id/text3" 
     android:layout_width="10dp" 
     android:layout_row="2" 
     android:layout_column="0" 
     android:textAlignment="textEnd"/> 


    <TextView 
     android:text="123.4" 
     android:layout_height="wrap_content" 
     android:id="@+id/text4" 
     android:layout_width="10dp" 
     android:layout_row="1" 
     android:layout_column="1" 
     android:textAlignment="textEnd"/> 

    <TextView 
     android:text="1.23" 
     android:layout_height="wrap_content" 
     android:id="@+id/text5" 
     android:layout_width="10dp" 
     android:layout_row="2" 
     android:layout_column="1" 
     android:textAlignment="textEnd"/> 

    <TextView 
     android:text="1234 " 
     android:layout_height="wrap_content" 
     android:id="@+id/text6" 
     android:layout_width="10dp" 
     android:layout_row="0" 
     android:layout_column="1" 
     android:textAlignment="textEnd"/> 

</GridLayout> 

*我正在使用xml佈局中的佈局寬度來嘗試「破壞」它,但實際上並未使用它。

無可否認,我不確定這是否是「最好」的方式來做到這一點。我個人覺得GridLayout XML 應該能夠自己做到這一點。但是,我無法弄清楚。