android中的控件如果在xml布局文件中把控件的layout_width和layout_height寫成固定值了,好像就不能再在程序中更改該控件的高逗皮度和寬度了,不知哪位大俠有何良策可以指教一二,如

成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)、錫林浩特網(wǎng)絡(luò)推廣、微信小程序開發(fā)、錫林浩特網(wǎng)絡(luò)營銷、錫林浩特企業(yè)策劃、錫林浩特品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供錫林浩特建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址:www.chinadenli.net
xml文件內(nèi)容如下:
LinearLayout
android:id="@id/dialog_bottom_neutral"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1.0"
android:gravity="center"
Button
android:id="仿棗@id/dialog_bottom_neutral_button"
android:layout_width="80.0dip"
android:layout_height="28.0dip"
android:background="@drawable/dlg_button"
android:gravity="center"
android:singleLine="true"
android:text="mid"
android:textColor="@drawable/dlg_button_text_color"
android:textSize="14.0sp" /
/LinearLayout
總結(jié):如何在程序中動態(tài)設(shè)置button的寬度和高度,在程序中使用button.width和button.height設(shè)備指拆置沒用,用LayoutParmas設(shè)置也沒用。
1、定巧拆雹歷義LayoutParams
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);//定義一個(gè)LayoutParams
2、在LayoutParams中設(shè)置marginLeft
layoutParams.setMargins(20,0,0,0);//4個(gè)參數(shù)按順序分別是左上右下
3、孝肆棗把這個(gè)LayoutParams設(shè)置給控件
mView.setLayoutParams(layoutParams); //mView是控件
一: 首先理清業(yè)務(wù)邏輯
兩個(gè)窗口, 第一個(gè)主窗口, 是用于填寫信息的, 點(diǎn)擊按鈕后,跳轉(zhuǎn)到第二個(gè)窗口,.
第二個(gè)對話框窗口 ,用于顯示需要打印的信息, 以及打印到文檔
二: 確定需要的技術(shù), java圖像界面主要使用awt和swing
swing里面的控件比較豐富, 且功能強(qiáng)大 .
三: 效果圖片
四: 完整的參考代碼
import?java.awt.*;
import?java.awt.event.*;
import?java.io.*;
import?javax.swing.*;
//定義一個(gè)主窗口類
public?class?MainFrame?extends?JFrame?{
public?static?final?String?FILE_PATH?=?"c:\\print.txt";//常量,用肆升搜于指定信息的保存路徑
//定義主要的組件
private?final?JTextField?jtf1,jtf2,jtf3;
private?final?JCheckBox?jcb1,jcb2,jcb3;
private?final?JRadioButton?jrb1,jrb2;
public?MainFrame()?{
setTitle("信息提交窗口");//設(shè)置窗口標(biāo)題
setSize(350,?320);//設(shè)置窗口大小
setLocationRelativeTo(null);//讓窗口居中
setDefaultCloseOperation(EXIT_ON_CLOSE);//當(dāng)主窗口關(guān)閉的時(shí)候退出jvm虛擬機(jī)
JPanel?jp?=?new?JPanel(new?GridLayout(5,?笑態(tài)1,?2,?1));//定義主顯示面板,布局為表格布局5行1列,水平間距2,垂直間距1
JPanel?jp1?=?new?JPanel();//第一行的組件面板
JLabel?jl1?=?new?JLabel("姓名");
jtf1?=?new?JTextField(10);
jp1.add(jl1);
jp1.add(jtf1);
JPanel?jp2?裂歷=?new?JPanel();//第二行的組件面板
JLabel?jl2?=?new?JLabel("學(xué)號");
jtf2?=?new?JTextField(10);
jp2.add(jl2);
jp2.add(jtf2);
JPanel?jp3?=?new?JPanel();//第三行的組件面板
JLabel?jl3?=?new?JLabel("性別");
jrb1?=?new?JRadioButton("男");
jrb2?=?new?JRadioButton("女");
jrb1.setSelected(true);
ButtonGroup?bgs?=?new?ButtonGroup();
bgs.add(jrb1);
bgs.add(jrb2);
jp3.add(jl3);
jp3.add(jrb1);
jp3.add(jrb2);
JPanel?jp4?=?new?JPanel();//第四行的組件面板
JLabel?jl4?=?new?JLabel("選擇愛好");
jcb1?=?new?JCheckBox("游泳");
jcb2?=?new?JCheckBox("籃球");
jcb3?=?new?JCheckBox("跑步");
jp4.add(jl4);
jp4.add(jcb1);
jp4.add(jcb2);
jp4.add(jcb3);
JPanel?jp5?=?new?JPanel();//第五行的組件面板
JLabel?jl5?=?new?JLabel("自我介紹");
jtf3?=?new?JTextField(22);
jp5.add(jl5);
jp5.add(jtf3);
//添加到主顯示面板
jp.add(jp1);
jp.add(jp2);
jp.add(jp3);
jp.add(jp4);
jp.add(jp5);
jp.setBorder(BorderFactory.createTitledBorder("填寫資料"));//設(shè)置主顯示面板的邊框
JButton?jb?=?new?JButton("跳轉(zhuǎn)到打印頁");
jb.addActionListener(new?ActionListener()?{//按鈕事件
public?void?actionPerformed(ActionEvent?e)?{//獲取組件的信息
StringBuilder?sb?=?new?StringBuilder();//用于連接信息
String?name?=?jtf1.getText();
sb.append("姓名:"?+?name?+?"\r\n");
String?num?=?jtf2.getText();
sb.append("學(xué)號:"?+?num?+?"\r\n");
String?sex;
if?(jrb1.isSelected())?{
sex?=?"男";
}?else?{
sex?=?"女";
}
sb.append("性別:"?+?sex?+?"\r\n");
String?aihao?=?"";
if?(jcb1.isSelected())?{
aihao?+=?jcb1.getText();
}
if?(jcb2.isSelected())?{
aihao?+=?"?"?+?jcb2.getText();
}
if?(jcb3.isSelected())?{
aihao?+=?"?"?+?jcb3.getText();
}
sb.append("愛好:"?+?aihao?+?"\r\n");
String?jieshao?=?jtf3.getText();
sb.append("自我介紹:"?+?jieshao?+?"\r\n");
new?PrintDailog(sb.toString(),?FILE_PATH).setVisible(true);//打開打印頁面,并設(shè)置為可見
}
});
getContentPane().add(new?JLabel("信息填寫",JLabel.CENTER),BorderLayout.NORTH);
getContentPane().add(jp);
getContentPane().add(jb,?BorderLayout.SOUTH);
}
public?static?void?main(String[]?args)?{
new?MainFrame().setVisible(true);
}
}
//定義一個(gè)對話框窗口類
class?PrintDailog?extends?JDialog?{
String?info;//用于接受信息
String?filePath;//文檔的路徑
private?final?JLabel?jl2;
public?PrintDailog(String?info,?final?String?filePath)?{
this.info?=?info;
this.filePath?=?filePath;
setModal(true);//模態(tài)為真,如果不關(guān)閉這個(gè)對話框,那么無法點(diǎn)擊其他窗口
setTitle("信息打印頁");//設(shè)置打印窗口的標(biāo)題
setSize(300,?320);//設(shè)置打印窗口的大小
setLocationRelativeTo(null);//設(shè)置打印窗口居中
setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);//當(dāng)點(diǎn)擊關(guān)閉按鈕時(shí),該窗口銷毀
JLabel?jl1?=?new?JLabel("信息打印顯示",?JLabel.CENTER);
JTextArea?jta?=?new?JTextArea(info);
jta.setEditable(false);//不可編輯
jta.setLineWrap(true);//自動換行
JScrollPane?jsp?=?new?JScrollPane(jta);
jsp.setBorder(BorderFactory.createTitledBorder("信息"));
JButton?jb1?=?new?JButton("打印");
JPanel?jp?=?new?JPanel(new?GridLayout(2,?1));
JPanel?jp1?=?new?JPanel();
jp1.add(jb1);
JPanel?jp2?=?new?JPanel();
jl2?=?new?JLabel();
jp2.add(jl2);
jp.add(jp1);
jp.add(jp2);
add(jl1,?BorderLayout.NORTH);
add(jsp);
add(jp,?BorderLayout.SOUTH);
jb1.addActionListener(new?ActionListener()?{//點(diǎn)擊打印的按鈕的事件
public?void?actionPerformed(ActionEvent?e)?{
saveToFile();//信息打印到了文檔
jl2.setText("信息已經(jīng)打印到"?+?filePath);//顯示出來
jl2.setForeground(Color.RED);//為了醒目設(shè)置顏色為紅色
}
});
}
private?void?saveToFile()?{//該方法用于保存信息到文檔
try?{
BufferedWriter?bw?=?new?BufferedWriter(new?OutputStreamWriter(new?FileOutputStream(filePath),?"UTF-8"));
bw.write(info);
bw.close();
}?catch?(Exception?e)?{
e.printStackTrace();
}
}
}
五: 拓展
java 制作圖像界面比較簡單, ?只需要熟練的掌握三大布局(流布局 表格布局 邊界布局)和常用組件 ?, 就能制作出比較復(fù)雜的界面 . ?所以理清業(yè)務(wù)邏輯, ?才是重點(diǎn)
問題就在于你沒有為每個(gè)item指定寬高
之前那句
bn.setLayoutParams(lp);
實(shí)際上是無效的,拍嘩因?yàn)閎tn的父控件是GridItem而不是RelativeLayout
修改的話,襲謹(jǐn)行在
GridLayout.LayoutParams?params?=?new?GridLayout.LayoutParams(rowSpec,?columnSpec);
這句后面加上設(shè)置寬高的語句
//寬高實(shí)際數(shù)值你自己計(jì)算,這里取40
params.width?=?40;
params.height?=?40;
這樣就行了,晌猜順便附上改后真機(jī)上的效果
新聞標(biāo)題:java代碼設(shè)置控件 java控件的添加與布局
本文地址:http://www.chinadenli.net/article48/ddpchep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、建站公司、Google、網(wǎng)站收錄、軟件開發(fā)、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)