我有一個設置頁邊距到GridLayout中多次使用的自定義線性佈局類的問題。 Gridlayout放置在一個片段中。 這是fragment_grid.xml的代碼:Android - 如何在GridLayout中爲自定義LinearLayouts設置保證金?
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="app_a_tize.expressme.Fragment.GridFragment"
android:layout_gravity="center">
<GridLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/orange"
android:layout_margin="5dp"
android:id="@+id/gridlayout_grid"></GridLayout>
</FrameLayout>
這是GridFragment.java的代碼:
public class GridFragment extends Fragment {
public GridFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_grid, container, false);
}
@Override
public void onStart() {
super.onStart();
GridLayout grid = (GridLayout) getView().findViewById(R.id.gridlayout_grid);
grid.setRowCount(3);
int tileHeight = (CategoryTileActivity.gridContentHeight -3 * 10)/3;
int amountofColumns = (int) CategoryTileActivity.gridContentWidth/tileHeight;
grid.setColumnCount(amountofColumns);
grid.setMinimumWidth((amountofColumns * tileHeight) + (5 * 20));
for (int i = 0; i < 3 * amountofColumns; i++) {
//fill the grid with the custom LinearLayout:
grid.addView(new TileClass(getActivity(), tileHeight, tileHeight, "ToBeImplemented", "Button"));
}
}
}
這是自定義的LinearLayout的代碼:
public class TileClass extends LinearLayout {
public TileClass(Context context, int height, int width, String image, String text) {
super(context);
this.setBackgroundResource(R.drawable.tile_button); //creates rounded layouts
this.setMinimumHeight(height);
this.setMinimumWidth(width);
this.setOrientation(LinearLayout.VERTICAL);
ImageView tileImage = new ImageView(context);
Bitmap bMap = BitmapFactory.decodeResource(getResources(), R.drawable.tilephoto);
Bitmap bMapScaled = Bitmap.createScaledBitmap(bMap, 100, 100, true);
tileImage.setImageBitmap(bMapScaled);
tileImage.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
TextView tileText = new TextView(context);
tileText.setText(text);
tileText.setTextColor(Color.WHITE);
tileText.setGravity(Gravity.CENTER);
addView(tileImage);
addView(tileText);
}
}
我上面顯示的代碼負責中間的橙色區域。
我需要的是:藍色「按鈕」/ LinearLayouts,在中間的橙色區域,具有5dp的邊距。所以橙色空間的其餘部分由自定義LinearLayouts拍攝。
我不知道如何解決這個問題,我嘗試了很多選擇,但他們似乎沒有爲我工作..一切從MarginLayoutParams到params.setMargins(5,5,5,5);幾乎在我的代碼中的每個佈局。
我使用Android Studio 2.1.2,支持最低API 15。
對於你的想象力,這一定是最後的結果,我需要這樣的邊緣:
您需要採用LinearLayout.LayoutParams的對象,並在您的TileClass中設置邊距和所有邊距,它會幫助您 – Vickyexpert
謝謝,但您的解決方案不起作用。 – 476rick