日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

java中android_在Android中用纯Java代码布局

發(fā)布時間:2025/3/12 Android 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java中android_在Android中用纯Java代码布局 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文的完成了參考了一篇國外的教程,在此表示感謝。

Android中的界面布局主要有兩種方式,一種是xml文件和Java代碼結(jié)合的布局方式,一種是完全依靠Java代碼布局。

兩種布局方式的比較

對于第一種方式,大多數(shù)人都比較熟悉,在這里就不細(xì)說了。這種方式的好處包括代碼的解耦,圖形化的布局界面,清晰明了,布局完后可以立馬得到反饋,還有xml格式自身帶來的優(yōu)點。

對于第二種方式它最大的好處就是可以在運行的過程中動態(tài)地改變界面,用xml的布局是靜態(tài)的。并且對于xml布局中的大部分屬性都有相對應(yīng)的Java方法來進行設(shè)置。

好,下面開始看怎么用Java代碼布局

關(guān)于Layout Parameters

Layout Parameters決定了你的view相對于父view和兄弟view的位置,我們通常通過ViewGroup.LayoutParams來進行設(shè)置

關(guān)于ID

我們在用xml布局的時候有時候需要設(shè)置好ID,比如相對布局設(shè)置位置的時候要根據(jù)ID來設(shè)置,同樣,在Java布局方式中有setId方法和getId方法來進行設(shè)置和獲取。

關(guān)于dp和px

為了達到更好的顯示效果,我們在xml布局的時候通常會采用dp作為單位,來設(shè)置控件的大小,但是在Java代碼中,我們的方法接收傳入?yún)?shù)是按照px來設(shè)置的,所以如果你想設(shè)置某控件的寬度為200dp,那么,你需要提前把它轉(zhuǎn)化為px單位下的寬度,然后再進行設(shè)置。

更加詳細(xì)的內(nèi)容在代碼中進行了展示,配合有詳細(xì)的注解說明。

import android.app.Activity;

import android.content.res.Resources;

import android.graphics.Color;

import android.os.Bundle;

import android.util.TypedValue;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.RelativeLayout;

public class OnlyJavaLayoutActivity extends Activity {

private boolean clicked = false;

private Button myButton;

private EditText myEditText;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//定義兩個控件,button和edittext

myButton = new Button(this);

myButton.setText("Press me");

myEditText = new EditText(this);

myEditText.setHint("See me");

//為空間設(shè)置ID

myButton.setId(1);

myEditText.setId(2);

//定義好父容器并設(shè)置相關(guān)屬性

RelativeLayout myLayout = new RelativeLayout(this);

myLayout.setBackgroundColor(Color.BLUE);

//設(shè)置Button的布局參數(shù)

RelativeLayout.LayoutParams buttonParams =

new RelativeLayout.LayoutParams(

RelativeLayout.LayoutParams.WRAP_CONTENT,

RelativeLayout.LayoutParams.WRAP_CONTENT);

buttonParams.addRule(RelativeLayout.CENTER_HORIZONTAL);

buttonParams.addRule(RelativeLayout.CENTER_VERTICAL);

//設(shè)置EditText的布局參數(shù)

RelativeLayout.LayoutParams textParams =

new RelativeLayout.LayoutParams(

RelativeLayout.LayoutParams.WRAP_CONTENT,

RelativeLayout.LayoutParams.WRAP_CONTENT);

textParams.addRule(RelativeLayout.ABOVE, myButton.getId());

textParams.addRule(RelativeLayout.CENTER_HORIZONTAL);

textParams.setMargins(0, 0, 0, 80);//這里的80是px

//設(shè)置EditText的寬度為指定大小寬度,要相應(yīng)的dp轉(zhuǎn)化為px

Resources r = getResources();

int px = (int) TypedValue.applyDimension(

TypedValue.COMPLEX_UNIT_DIP, 200, r.getDisplayMetrics());

myEditText.setWidth(px);

//將布局添加到父容器中

myLayout.addView(myButton, buttonParams);

myLayout.addView(myEditText, textParams);

//設(shè)置顯示父容器

setContentView(myLayout);

//為Button設(shè)置點擊事件,點擊使其變寬

final int wrapWidth = myButton.getLayoutParams().width;

myButton.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

//點擊Button之后使其寬度變寬,再次點擊恢復(fù)之前的wrap_content狀態(tài),可以配合屬性動畫使其變化更加自然

if (!clicked) {

myButton.getLayoutParams().width = 800;

} else {

myButton.getLayoutParams().width = wrapWidth;

}

clicked = !clicked;

myButton.requestLayout();

}

});

}

}

效果如下圖:

總結(jié)

以上是生活随笔為你收集整理的java中android_在Android中用纯Java代码布局的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。