2016-07-27 4 views
0

버튼 격자를 만들려고합니다. GridLayout의 분할자를 표시하기 위해 배경색을 GridLayout 검정색으로 설정했습니다. & 다음에 제 단추를 배치하려고했습니다. 나는 그리드에서 디바이더를 얻는 중이지만 어떤 이유로 그 두께를 제어 할 수 없다.GridView 패딩, verticalSpacing 및 horizontalSpacing이 감소하지 않습니다.

나는 verticalSpacinghorizontalSpacing을 0.1로 낮추어 보았지만 아직 사용하지 않았다. 그냥 줄어들지 않습니다 나는 버튼의 레이아웃, cell_layout.xml 다음 다음 내 content_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    tools:context="accordiontry.juspay.accordiontry.MainActivity" 
    tools:showIn="@layout/activity_main" 
    android:orientation="vertical"> 

    <GridView 
     android:id="@+id/gridView" 
     android:padding="0dp" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@android:color/black" 
     android:stretchMode="columnWidth" 
     android:gravity="fill_horizontal" 
     android:numColumns="2" 
     android:verticalSpacing=".05dp" 
     android:horizontalSpacing="0.1dp"> 
    </GridView> 
</LinearLayout> 

되어 다음

enter image description here

입니다 치울

<Button 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/button" 
    xmlns:android="http://schemas.android.com/apk/res/android" /> 

다음은 맞춤 격자입니다. pter, GridAdapter.java는

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.Button; 

/** 
* Created by stpl on 27/7/16. 
*/ 
public class GridAdapter extends BaseAdapter { 

    private Context context; 
    private String[] names; 

    public GridAdapter(Context context, String[] names) 
    { 
     this.context = context; 
     this.names = names; 
    } 

    @Override 
    public int getCount() { 
     return names.length; 
    } 

    @Override 
    public Object getItem(int i) { 
     return null; 
    } 

    @Override 
    public long getItemId(int i) { 
     return 0; 
    } 

    @Override 
    public View getView(int i, View view, ViewGroup viewGroup) 
    { 
     View cell; 
     LayoutInflater inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE); 

      cell = inflater.inflate(R.layout.cell_layout,null); 
      Button btn = (Button) cell.findViewById(R.id.button); 
      btn.setText("BUTTON "+ names[i]); 


     return cell; 

    } 
} 

그리고 마지막으로, 다음은 내가 잘못거야 어디 모르는 내 MainActivity.java

import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.graphics.Path; 
import android.graphics.Typeface; 
import android.graphics.drawable.Drawable; 
import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.GridLayoutManager; 
import android.support.v7.widget.Toolbar; 
import android.view.Gravity; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.ViewGroup; 
import android.view.animation.Animation; 
import android.view.animation.LinearInterpolator; 
import android.view.animation.RotateAnimation; 
import android.webkit.WebView; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.GridLayout; 
import android.widget.GridView; 
import android.widget.ImageView; 
import android.widget.TextView; 
import android.widget.Toast; 

public class MainActivity extends AppCompatActivity { 

    private GridView gridView; 
    private final int NumOfCol = 2; 
    private final int NumOfRows = 2; 

    private String[] names = {"BUTTON1", "BUTTON2", "BUTTON3", "BUTTON4"}; 

    private GridAdapter gridAdapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     init(); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 

    public void init() 
    { 
     gridView = (GridView) findViewById(R.id.gridView); 

     gridAdapter = new GridAdapter(this, names); 

     gridView.setAdapter(gridAdapter); 

    } 



} 

입니다. 도와주세요.

감사합니다.

답변

0

버튼에는 일반적으로 버튼 배경으로 사용 된 드로어 블에서 오는 자체 내장 여백이 있습니다. 이 문제를 해결하는

한 가지 방법은 마진 음의 값을 지정하는 것입니다 :

<Button 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/button" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_margin="-2dp" /> 

더 좋은 방법은 어떤 이익률은 정의가 있고 위해 그것을 사용하지 않는 버튼 드로어 블을 생성하는 것입니다 단추 배경입니다.

<inset xmlns:android="http://schemas.android.com/apk/res/android" 
     android:insetLeft="@dimen/abc_button_inset_horizontal_material" 
     android:insetTop="@dimen/abc_button_inset_vertical_material" 
     android:insetRight="@dimen/abc_button_inset_horizontal_material" 
     android:insetBottom="@dimen/abc_button_inset_vertical_material"> 
    <shape android:shape="rectangle"> 
     <corners android:radius="@dimen/abc_control_corner_material" /> 
     <solid android:color="@android:color/white" /> 
     <padding android:left="@dimen/abc_button_padding_horizontal_material" 
       android:top="@dimen/abc_button_padding_vertical_material" 
       android:right="@dimen/abc_button_padding_horizontal_material" 
       android:bottom="@dimen/abc_button_padding_vertical_material" /> 
    </shape> 
</inset> 

그 세트가 당신에게 슬픔을주고 일부입니다 : 예를 들어, 여기에 APPCOMPAT 라이브러리에서 버튼 배경 당김 (이 사전 롤리팝하고 리플을 표시하지 않습니다)입니다. 인셋없이 단추 배경에 다른 드로어 블을 정의하면됩니다.

관련 문제