如何以编程方式将android:layout_columnWeight =“ 1”设置为android支持v7 Gridlayout中的元素

hans_dc

我正在尝试以编程方式构建包含2列的GirdLayout,并且我希望这些列的宽度相等,设置为屏幕宽度的一半。

我发现您可以从API 21或支持v7 GirdLayout视图开始执行此操作。我看到了使用android:layout_columnWeight =“ 1”来执行此操作的示例。但是我找不到如何以编程方式执行此操作。

谁能帮我解决这个问题?

package com.tunify.v3.component;

import java.util.ArrayList;

import android.support.v7.widget.GridLayout;
import android.util.DisplayMetrics;
import android.util.TypedValue;
import android.view.ViewGroup;

import com.tunify.asme.data.ChangeableSelectionParameterValue;

public class ChangeableSelectionParameters extends GridLayout{

//private ArrayList<ChangeableSelectionParameterView> selectionParameterViews;
private ArrayList<ChangeableSelectionParameterValue> selectionParameterValues;

private static final int ITEM_PADDING_LEFT_DP = 0;
private static final int ITEM_PADDING_RIGHT_DP = 0;
private static final int ITEM_PADDING_TOP_DP = 0;
private static final int ITEM_PADDING_BOTTOM_DP = 0;

//private static final int MUSICCOLLECTION_DISPLAY_TEXT_SIZE_SP = 15;


public ChangeableSelectionParameters(android.content.Context context, ArrayList<ChangeableSelectionParameterValue> selectionParameterValues) {
    super(context);

    this.selectionParameterValues = selectionParameterValues;

    initializeLayoutBasics(context);
    initializeComponents();
}

private void initializeLayoutBasics(android.content.Context context) {
    setOrientation(VERTICAL);
    setColumnCount(2);
    setRowCount((int)Math.ceil(selectionParameterValues.size()/2.0));

    int width = ViewGroup.LayoutParams.MATCH_PARENT;
    int height = ViewGroup.LayoutParams.WRAP_CONTENT;
    android.view.ViewGroup.LayoutParams layoutParams = new android.view.ViewGroup.LayoutParams(width, height);
    this.setLayoutParams(layoutParams);

    DisplayMetrics metrics = getResources().getDisplayMetrics();

    int paddingLeftPx = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, ITEM_PADDING_LEFT_DP, metrics);
    int paddingRightPx = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, ITEM_PADDING_RIGHT_DP, metrics);
    int paddingTopPx = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, ITEM_PADDING_TOP_DP, metrics);
    int paddingBottomPx = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, ITEM_PADDING_BOTTOM_DP, metrics);
    setPadding(paddingLeftPx, paddingTopPx, paddingRightPx, paddingBottomPx);

}

private void initializeComponents() {

    for(ChangeableSelectionParameterValue param : this.selectionParameterValues){
        ChangeableSelectionParameterView v = new ChangeableSelectionParameterView(getContext(), param);
        //TODO set views layout column weight to 1
        this.addView(v);
    }
 }
}

解决方案:

 GridLayout.LayoutParams parem = new LayoutParams(GridLayout.spec(GridLayout.UNDEFINED, 1f),      GridLayout.spec(GridLayout.UNDEFINED, 1f));
 v.setLayoutParams(parem);
vilpe89

我从GridLayout中找到了此方法:http : //grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.0.0_r1/android/widget/GridLayout.java#GridLayout.spec %28int%2Cfloat%29

所以也许您可以尝试这样的事情:

((GridLayout.LayoutParams) this.getLayoutParams()).columnSpec =
    GridLayout.spec(GridLayout.UNDEFINED, 1f);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

以编程方式添加时,如何为GridLayout子项设置layout_columnWeight?

来自分类常见问题

android-在支持v7的xml中应用selectableItemBackground

来自分类Dev

如何以编程方式在Android中居中GridLayout(不更改xml文件)?

来自分类Dev

Android支持v7

来自分类Dev

Android Xamarin,如何以编程方式在EditText中设置nextfocusdown?

来自分类Dev

如何以编程方式更改Android中的GPS设置?

来自分类Dev

Android-如何以编程方式将证书存储在密钥库中?

来自分类Dev

如何以编程方式从Android通过mainActivity将项目添加到arrayList中的stringArray

来自分类Dev

使用Android支持库v7的Android Maven Project中的ActionBar

来自分类Dev

如何以编程方式在android中的linearlayout中给textview位置

来自分类Dev

Android-如何以编程方式在LinearLayout中添加具有不同layout_margins的多个按钮?

来自分类Dev

如何以编程方式重新启动android中的服务?

来自分类Dev

如何以编程方式在Android中打开Flashlight

来自分类Dev

如何以编程方式关闭Android中的对话框?

来自分类Dev

如何以编程方式更改Android L中的原色?

来自分类Dev

如何以编程方式在Android中制作水平线

来自分类Dev

如何以编程方式在Android中绘制以下图像?

来自分类Dev

如何以编程方式在Android应用中实现点击?

来自分类Dev

如何以编程方式使按钮在Android中可滚动?

来自分类Dev

如何以编程方式在android中自动执行触摸

来自分类Dev

如何以编程方式在Android布局中添加新按钮

来自分类Dev

如何以编程方式在Android中重置铃声

来自分类Dev

如何以编程方式获取当前在Android中播放的歌曲

来自分类Dev

如何以编程方式在android中打开隐藏文件?

来自分类Dev

如何以编程方式在android sqlite中找出表的主键?

来自分类Dev

Android支持库v7 + Maven + Eclipse:在工作区中找不到apklib依赖项

来自分类Dev

Android如何以编程方式将layout_below更改为TextView

来自分类Dev

Android ClassNotFoundException支持v7 TestActivity

来自分类Dev

Android Studio支持库v7

Related 相关文章

  1. 1

    以编程方式添加时,如何为GridLayout子项设置layout_columnWeight?

  2. 2

    android-在支持v7的xml中应用selectableItemBackground

  3. 3

    如何以编程方式在Android中居中GridLayout(不更改xml文件)?

  4. 4

    Android支持v7

  5. 5

    Android Xamarin,如何以编程方式在EditText中设置nextfocusdown?

  6. 6

    如何以编程方式更改Android中的GPS设置?

  7. 7

    Android-如何以编程方式将证书存储在密钥库中?

  8. 8

    如何以编程方式从Android通过mainActivity将项目添加到arrayList中的stringArray

  9. 9

    使用Android支持库v7的Android Maven Project中的ActionBar

  10. 10

    如何以编程方式在android中的linearlayout中给textview位置

  11. 11

    Android-如何以编程方式在LinearLayout中添加具有不同layout_margins的多个按钮?

  12. 12

    如何以编程方式重新启动android中的服务?

  13. 13

    如何以编程方式在Android中打开Flashlight

  14. 14

    如何以编程方式关闭Android中的对话框?

  15. 15

    如何以编程方式更改Android L中的原色?

  16. 16

    如何以编程方式在Android中制作水平线

  17. 17

    如何以编程方式在Android中绘制以下图像?

  18. 18

    如何以编程方式在Android应用中实现点击?

  19. 19

    如何以编程方式使按钮在Android中可滚动?

  20. 20

    如何以编程方式在android中自动执行触摸

  21. 21

    如何以编程方式在Android布局中添加新按钮

  22. 22

    如何以编程方式在Android中重置铃声

  23. 23

    如何以编程方式获取当前在Android中播放的歌曲

  24. 24

    如何以编程方式在android中打开隐藏文件?

  25. 25

    如何以编程方式在android sqlite中找出表的主键?

  26. 26

    Android支持库v7 + Maven + Eclipse:在工作区中找不到apklib依赖项

  27. 27

    Android如何以编程方式将layout_below更改为TextView

  28. 28

    Android ClassNotFoundException支持v7 TestActivity

  29. 29

    Android Studio支持库v7

热门标签

归档