2013-01-21 10 views
5

私はボタンを動的に追加する簡単なGridLayoutを使用しています。GridLayoutのSetGravityが機能しない

<GridLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/tagGridLayout" 
android:background="@color/white" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:columnCount="3" 
> 
</GridLayout> 

そして、私は、設定された重力のオプションは何もしないことを除いて、すべての作業罰金です私のグリッドを埋めるために、このJavaコードを使用しています。私は試みました - layout_widthをXMLファイル内の異なるタイプに変更し、GridLayoutなどに重力を加えました。このサイトの他のソリューションで説明しました。注意すべきもう一つのことは、断片内の非同期タスクでこれをやっていることです。基本的に私はXMLでlayout_gravity="fill_horizontal"が達成するものを達成したいと思います。

tagButtons = new Button[trendingTagsCount]; 
     for(int i=0;i<trendingTagsCount;i++) 
     { 
      tagButtons[i] = new Button(getActivity()); 
      //tagButtons[i].setLayoutParams(new LayoutParams(Gravity.FILL_HORIZONTAL)); 
      tagButtons[i].setText(getTagsList.get(i).tag); 
      tagButtons[i].setGravity(Gravity.FILL_HORIZONTAL); 
      tagButtonGrid.addView(tagButtons[i]); 
     } 
+0

私はbutton.setMaxWidth()とHeightを使用して妥協を管理しましたが、まだ答えは見つかりませんでした。 – RaWa

+0

このようなことができます... LayoutParams param; lp =(LayoutParams)tagButtons [i] .getLayoutParams(); lp.gravity = Gravity.FILL_HORIZONTAL; tagButtons [i] .setLayoutParams(lp); –

答えて

3

Karan Merは、GridLayout.LayoutParamsを使用してレイアウト重力を設定していると言いました。

しかし、注意してください、GridLayoutの中であなたは前に(あなたのケースのボタンで)子供のcolumnSpec/ROWSPECを設定する必要があります。columnSpec場合

param.columnSpec = GridLayout.spec(0); 
param.rowSpec = GridLayout.spec(0); 

だけにして

param.setGravity(Gravity.RIGHT); 

/ROWSPECはあなたが行う場合であっても...

あなたがsetGravityを行う際に、重力が働かないUNDEFINEDです:

param.setGravity(Gravity.RIGHT); 
param.columnSpec = GridLayout.spec(0); 
param.rowSpec = GridLayout.spec(0); 

重力は動作しません...

正しい方法は次のとおりです。

​​

バグや意図的なものである場合、私は知りません。 (私はAndroid API 19を使用しています)

関連する問題