2016-07-27 4 views
0

Ich versuche, ein Raster von Schaltflächen zu erstellen. Um die Teiler einer GridLayout zu zeigen, habe ich den Hintergrund meiner GridLayout mit Farbe schwarz gesetzt & Ich habe dann versucht, meine Taste zu platzieren. Ich bin der Teiler im Raster, aber aus irgendeinem Grund kann ich ihre Dicke nicht kontrollieren.GridView Padding, VerticalSpacing & HorizontalSpacing wird nur nicht abnehmen

Ich habe versucht, die verticalSpacing und horizontalSpacing so niedrig wie 0,1, aber immer noch keine Verwendung. Es wird einfach nicht abnehmen und ich am Ende die folgende bekommen

enter image description here

Es folgt mein 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> 

Es folgt das Layout für die Schaltfläche, cell_layout.xml

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

Folgendes ist die benutzerdefinierte Grid Ada pitel, 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; 

    } 
} 

Und schließlich finden Sie meine 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); 

    } 



} 

Ich weiß nicht, wo ich falsch gehe. Bitte helfen Sie.

Vielen Dank für Ihre Zeit!

Antwort

0

Schaltflächen haben in der Regel einen eigenen integrierten Rand, der von der Zeichenfläche kommt, die als Schaltflächenhintergrund verwendet wird.

Eine Möglichkeit, dies zu beheben, ist ein negativer Wert für den Rand angeben:

<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" /> 

Ein besserer Weg ist es, eine ziehbar für die Schaltfläche erstellen, die keine Marge definiert hat und verwenden Sie für Ihre Schaltflächenhintergrund. Zum Beispiel, hier ist eine Schaltfläche Hintergrund ziehbar aus der appcompat Bibliothek (dieses ist bereits Lollipop und zeigt nicht die Welligkeit):

<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> 

Diese Einsätze sind der Teil, der Ihnen Trauer gibt. Definieren Sie einfach einen anderen Zeichensatz für Ihren Schaltflächenhintergrund ohne Einfügungen.

Verwandte Themen