我一直试图让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>
我的问题是第二列中加载的数据列的大小变化如此之小。我尝试过左侧和中心对齐,似乎没有任何东西可以阻止列的变化。用户将重复更新这些值并轻微地摇晃&#39; jiggle&#39;列移位看起来非常糟糕。
答案 0 :(得分: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布局中的布局宽度我正在尝试使用&#39; break&#39;它,实际上并未使用。
不可否认,我不确定这是否是最好的&#39;这样做的方式。就个人而言,我觉得GridLayout XML 应该能够在它自己的基础上做到这一点。但是,我无法弄明白。