本文目录
- 为什么 GridLayout 不会填满所有可用的空间吗
- java 在有GridLayout布局管理器的情况下,怎么设置元件大小
- 使用GridLayout布局为什么会报错
- 怎么重写GridLayout中的方法
- GridLayout和GridView的区别
- 请教:android gridlayout 如何设置列宽和行高
- JAVA里面GridLayout的作用
- java gridlayout 如何实现30行2列如图示的排列
- 关于java 中的 GridLayout设置问题
为什么 GridLayout 不会填满所有可用的空间吗
我有 GridLayout (向其中添加儿童以编程方式)。
结果是丑陋的因为 GridLayout 不会填满所有可用的空间。
这是结果:
这是我的 XML:
《?xml version=“1.0“ encoding=“utf-8“?》
《ScrollView xmlns:android=“http://schemas.android.com/apk/res/android“
android:layout_width=“match_parent“
android:layout_height=“match_parent“
》
《HorizontalScrollView
android:layout_width=“match_parent“
android:layout_height=“match_parent“ 》
《android.support.v7.widget.GridLayout
android:id=“@+id/gridlayout“
android:layout_width=“match_parent“
android:layout_height=“match_parent“
android:background=“@android:color/white“ 》
《/android.support.v7.widget.GridLayout》
《/HorizontalScrollView》
《/ScrollView》-rid
java 在有GridLayout布局管理器的情况下,怎么设置元件大小
直接用addView(child, width, height).size()来设置就可以了。
因为GridLayout里面的组件是在变化的,所有需要动态设置子组件的Size和它们之间的间距。
还可以这么做:在父类容器中把子类容器的参数通过修改子类容器构造函数的方式传给子类容器,这样就可以在父类容器中直接修改子类容器的属性了。
-out
使用GridLayout布局为什么会报错
这样告诉你吧,GridLayout是在API level14才出来的,而你项目中AndroidManifest.xml里设置的 android:minSdkVersion的这个数字肯定比14小才会出现这样的错误。
-rid
怎么重写GridLayout中的方法
方法1:你可以在定义这个对象时直接重写这个方法 :
GridLayout gl=new GridLayout(){
public void setColumns(int a){
System.out.println(“你重写的内容“);
}
};
方法2:你可以写一个类继承GridLayout(),然后在这个类里面重写色他setColumns(int cols)方法:
class cc extends GridLayout{
cc(){
super();
}
public void setColumns(int cols) {
System.out.println(“你重写的内容“);
}
}
-out
GridLayout和GridView的区别
GridLayout和GridView的区别:
GridView是一种适配器布局,它的继承关系是ViewGroup--》AdapterView--》AbsListView--》GridView,他是从一个adapter中取出内容填充到GridView中的每一个子View。
GridLayout是一个布局,它大大简化了对复杂布局的处理,提高了性能。他直接继承自ViewGroup,和LinearLayout这种是类似的。
我感觉GridView和GridLayout就和ListView和LinearLayout的区别类似。
那么什么时候用GridView什么时候用GridLayout呢?
类似九宫格这种可以采用GridView。但是像Android系统自带的计算器的界面就不可能通过GridView实现,因为有些按键不一样大,如果使用GridLayout实现那就很简单了。另外GridLayout比RelativeLayout更好用。
-rid
请教:android gridlayout 如何设置列宽和行高
GridLayout是网格布局,它会均分你的布局容器,所以行列高度和宽度是统一的,只能通过调整布局容器大小来改变。如果要控制单元网格的大小,那只能用GridBagLayout了
关于设置列宽和行高,GridView本身只是个视图展示和listview一样,要想把里面的元素缩小放大,把添加到里面的布局缩小放大即可
JAVA里面GridLayout的作用
就是把你的组件按你指定的几行几列给分开,你添加其他组件时,会按你添加的顺序挨个添加到该组件上。比如说 contaninername.setLayout(new GridLayout(3,2)) 意思就是把contaninername这个组件设置成三行两列的网格布局
-out
java gridlayout 如何实现30行2列如图示的排列
GridLayout是这样的,都是平均分配的。根据楼主的需求,我提供两种思路:
其一:使用JSplitPane分割,以下代码:
private void init{} {
//左侧布局
JPanel left = new JPanel() ;
left.setLayout(new GridLayout(30,1,1,1));
for(int i=0;i《30;i++) {
//添加JLabel
}
//右侧布局
JPanel right = new JPanel() ;
right.setLayout(new GridLayout(30,1,1,1));
for(int i=0;i《30;i++) {
//添加JTextField
}
//整体布局
JSplitPane jsp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,left,right);//使用JSplitPane
jsp.setDividerLocation(100);
this.add(jsp) ;
this.setLocation(100, 100);
this.setSize(400, 800);
this.setVisible(true);
}
注意:jsp.setDividerLocation(100);方法是设置分隔栏的位置;其中数字要配合this.setSize(400, 800);使用,长400,分隔栏100,也就是大约左侧占四分之一,右侧占四分之三。这种方法比较灵活。
其二:使用BorderLayout布局器,代码就不写了,太麻烦
就是把左边的JLabel布局好以后放在WEST中,右侧的JTextField布局好后放在CENTER中。
-rid
关于java 中的 GridLayout设置问题
你的JPanel可以用BorderLayout啊
上面的文本域,可以被JScrollPane包裹啊,
然后这个pane就加到BorderLayout.CENTER
下面的按钮就加到BorderLayout.SOUTH
这样就刚刚好了,用布局要看情况来选择合适的布局。
还是跟你写好了吧,说都白说了
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class JButtonTest extends JFrame
{
private static final long serialVersionUID = 1L;
public JButtonTest ()
{
setTitle (“tester“);
setSize (300, 300);
setLayout (new BorderLayout ());
setLocationRelativeTo (null);
setResizable (false);
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
}
private void addComponents ()
{
JTextArea area = new JTextArea ();
JScrollPane scrollPane = new JScrollPane (area);
JButton button = new JButton (“图书推荐“);
add (scrollPane, BorderLayout.CENTER);
JPanel panel = new JPanel (new FlowLayout (FlowLayout.CENTER));
panel.add (button);
add (panel, BorderLayout.SOUTH);
}
public static void main ( String args )
{
JButtonTest tester = new JButtonTest ();
tester.addComponents ();
tester.setVisible (true);
}
}
-out