В GridView Одно изображение и текст поступают как элемент. Поэтому я хочу сделать квадрат в качестве границы для каждого изображения и текста внутри этого квадрата, как и изображение.Каждый элемент (изображение и имя) в GridView окружен квадратом в Android, но не может создать изображение, подобное изображенному ниже. Что касается изображения, я хочу добавить закругленный угол каждого текста, и изображение должно быть окружено квадратом, подобным изображению, как я могу это сделать?Что я могу сделать для Марка окружен квадратом каждого элемента gridview согласно изображению
xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:background="#d3d3d3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
>
<GridView
android:id="@+id/gridView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="auto_fit"
android:columnWidth="90dp"
android:horizontalSpacing="10dp"
android:verticalSpacing="18dp"
android:gravity="center"
android:stretchMode="columnWidth">
</GridView>
</LinearLayout>
Фрагмент
public class GridCateFragment extends Fragment {
//Web api url
View rootView;
//RecyclerView recyclerViewInstitutions;
//CustomListAdapter institutionAdapter;
//ArrayList<Movie> institutions;
public static final String TAG_IMAGE_URL = "image";
public static final String TAG_NAME = "name";
//GridView Object
private GridView gridView;
//ArrayList for Storing image urls and titles
private ArrayList<String> images;
private ArrayList<String> names;
public GridCateFragment() {
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_gridcatefragment, container, false);
gridView = (GridView) rootView.findViewById(R.id.gridView);
images = new ArrayList<>();
names = new ArrayList<>();
getData();
// getClientsList();
return rootView;
}
private void getData(){
String tag_string_req = "req_register";
String url = AppConfig.Base_Url +AppConfig.App_api+AppConfig.URL_Cat;
//Showing a progress dialog while our app fetches the data from url
final ProgressDialog loading = ProgressDialog.show(getContext(), "Please wait...","Fetching data...",false,false);
//Creating a json array request to get the json from our api
final StringRequest jsonObjReq = new StringRequest(Request.Method.GET,url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
//Dismissing the progressdialog on response
loading.dismiss();
try {
String jsonObjReq = null;
JSONObject obj = new JSONObject(String.valueOf(response));
String status = obj.getString("status");
String message = obj.getString("message");
Log.d(TAG, "Register Response1: " + status);
Log.d(TAG, "Register Response2: " + message);
JSONObject obj1 = new JSONObject(String.valueOf(obj));
JSONObject result = obj.getJSONObject("result");
Log.d(TAG, "Register Response3: " + result);
JSONArray category = result.getJSONArray("category");
Log.d(TAG, "Register Response4: " + category);
for (int i = 0; i < category.length(); i++) {
JSONObject object = category.getJSONObject(i);
Log.d(TAG, "Register Response5: " + object);
String k =object.getString("image");
String l=(object.getString("name"));
Log.d("feedArray", " " + k);
Log.d("feedArray1", " " + l);
//getting image url and title from json object
names.add(l);
images.add(k);
Log.d("feedArrayListAfterParse", " " + object.getString("name"));
Log.d("feedArrayListAfterPa1", " " + object.getString("id"));
Log.d("feedArrayListAfte", " " + object.getString("image"));
}
}
catch (JSONException e){
e.printStackTrace();
}
GridViewAdapter gridViewAdapter = new GridViewAdapter(getContext(),names,images);
//Adding adapter to gridview
gridView.setAdapter(gridViewAdapter);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}
);
//Creating a request queue
RequestQueue requestQueue = Volley.newRequestQueue(getContext());
//Adding our request to the queue
requestQueue.add(jsonObjReq);
}
}
Адаптер
public class GridViewAdapter extends BaseAdapter {
//Imageloader to load images
private ImageLoader imageLoader;
//Context
private Context context;
//Array List that would contain the urls and the titles for the images
private ArrayList<String> names;
private ArrayList<String> images;
public GridViewAdapter (Context context, ArrayList<String> names, ArrayList<String> images){
//Getting all the values
this.context = context;
this.names = names;
this.images = images;
}
@Override
public int getCount() {
return images.size();
}
@Override
public Object getItem(int position) {
return images.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//Creating a linear layout
LinearLayout linearLayout = new LinearLayout(context);
linearLayout.setOrientation(LinearLayout.VERTICAL);
//Creating a textview to show the title
TextView textView = new TextView(context);
textView.setText(names.get(position));
//NetworkImageView
NetworkImageView networkImageView = new NetworkImageView(context);
//networkImageView.setImageResource(mThumbIds[position]);
networkImageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
networkImageView.setLayoutParams(new GridView.LayoutParams(200, 200));
//Initializing ImageLoader
imageLoader = CustomVolleyRequest.getInstance(context).getImageLoader();
imageLoader.get(images.get(position), ImageLoader.getImageListener(networkImageView, R.mipmap.ic_launcher, android.R.drawable.ic_dialog_alert));
//Setting the image url to load
networkImageView.setImageUrl(images.get(position),imageLoader);
//Scaling the imageview
networkImageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
//networkImageView.setLayoutParams(new GridView.LayoutParams(200,200));
//Adding views to the layout
linearLayout.addView(networkImageView);
linearLayout.addView(textView);
//Returnint the layout
return linearLayout;
}
}