GridLayout

时间:2016-03-31 11:20:59

标签: android android-layout grid-layout android-gridlayout

我目前正在尝试创建一个看起来像最新Android中的默认Google Calculator的布局。现在我正在努力使用GridLayout和一个自定义组件(称为FlatButton)。 FlatButton

的.java代码
public class FlatButton extends android.widget.FrameLayout {
...
public FlatButton(Context context, AttributeSet attrs) {
    super(context, attrs);
    init(context, attrs, 0);
}

private void init(Context context, AttributeSet attrs, int defStyle) {
    // Load attributes
    final TypedArray a = getContext().obtainStyledAttributes(
        attrs, R.styleable.FlatButton, defStyle, 0);

    LayoutInflater inflater = (LayoutInflater)context.getSystemService(  
        Context.LAYOUT_INFLATER_SERVICE);
    inflater.inflate(R.layout.control_flat_button, this);
    setTextColor(a.getColor(R.styleable.FlatButton_textColor, getTextColor()));
    setText(a.getText(R.styleable.FlatButton_text));

    this.setPadding(0, 0, 0, 0);

    a.recycle();
    this.setClickable(true);
}

control_flat_button的.xml内容:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_margin="0dip"
    android:padding="0dip"
    android:gravity="center"
    android:layout_height="@dimen/flat_button_width"
    android:layout_width="@dimen/flat_button_width"
    android:clickable="true"
    android:background="?attr/selectableItemBackground">

    <TextView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_margin="0dip"
        android:layout_height="@dimen/flat_button_width"
        android:layout_width="@dimen/flat_button_width"
        android:textSize="30dp"
        android:id="@+id/text"/>
</LinearLayout>

这些按钮或现在用于GridLayout。我想用这些按钮填充布局的整个空间,其中eatch行应该包含其中的5个。我目前的方法使用整个空间,但有一些奇怪的东西。例如,在整个按钮上正确设置了红色background,但是当我点击其中一个时,涟漪效果似乎在按钮中有某种不可见的边框,正如您在右侧按钮中看到的那样如下:
enter image description here。 我使用这个.xml布局来显示它们:

 <GridLayout
        android:useDefaultMargins="false"
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:orientation="horizontal"
        android:columnCount="5"
        android:theme="@style/Theme.AppCompat"
        android:background="?android:attr/colorBackground"
        >

    <com.flashtek.playground.FlatButton
            android:background="@android:color/holo_blue_light"
            app:text="Button"
            android:layout_gravity="fill"
            android:layout_columnWeight="1"
            />
    <com.flashtek.playground.FlatButton
            android:background="@android:color/holo_blue_light"
            app:text="Button"
            android:layout_gravity="fill"
            android:layout_columnWeight="1"
            />
        ...and some more buttons...
</GridLayout>

如何摆脱这个边界的涟漪效应?这似乎与GridLayout相关联,因为当我在简单的FlatButton中使用LinearLayout时,这个问题就不会发生了。那么,我做错了什么?

0 个答案:

没有答案