Android開發(fā)中UI相關(guān)的問題總結(jié)

UI設計和實現(xiàn)是Android開發(fā)中必不可少的部分串结,UI做不好的話呻右,丑到爆跪妥,APP性能再好,估計也不會有多少人用吧声滥,而且如果UI和業(yè)務代碼邏輯中間沒有處理好眉撵,也會很影響APP的性能的。稍微總結(jié)一下落塑,開發(fā)中遇到的一些UI相關(guān)的問題纽疟,以及解決的方法,提供給有需要的人憾赁。

1污朽,Android全屏顯示

方法:requestWindowFeature(Window.FEATURE_NO_TITLE);

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

? ? ? ? ? ? ? ? WindowManager.LayoutParams.FLAG_FULLSCREEN);

2,visibility屬性VISIBLE龙考、INVISIBLE蟆肆、GONE的區(qū)別

設置方法:

XML文件:android:visibility="visible"

Java代碼:view.setVisibility(View.VISIBLE);

區(qū)別:

VISIBLE:設置控件可見。

INVISIBLE:設置控件不可見晦款。保留控件占有的布局空間炎功。

GONE:設置控件隱藏。不保留控件占有的布局空間缓溅。

3蛇损,創(chuàng)建帶圖標的右上角下拉菜單項(類似微信掃一掃菜單項)

/** *創(chuàng)建菜單 */

@Override

public boolean onCreateOptionsMenu(Menu menu) {

menu.add(Menu.NONE, Menu.FIRST+1, 0, getResources().getString(R.string.scan_menu_text)).setIcon(R.drawable.scan_icon_24);

return true;

}

/**

* 利用反射機制調(diào)用MenuBuilder的setOptionalIconsVisible方法設置mOptionalIconsVisible為true,給菜單設置圖標時才可見

* 讓菜單同時顯示圖標和文字

* @param featureId

* @param menu

* @return

*/

@Override

public boolean onMenuOpened(int featureId, Menu menu) {

if (menu != null) {

if (menu.getClass().getSimpleName().equalsIgnoreCase("MenuBuilder")) {

try {

Method method = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE);

method.setAccessible(true);

method.invoke(menu, true);

} catch (Exception e) {

e.printStackTrace();

}

}

}

return super.onMenuOpened(featureId, menu);

}

/**

*菜單的點擊事件

*/

@Override

public boolean onOptionsItemSelected(MenuItem item) { super.onOptionsItemSelected(item);

switch (item.getItemId()){

case Menu.FIRST+1:

Intent intent = new Intent(RIWarehouseActivity.this, CaptureActivity.class); startActivityForResult(intent, Constant.REQ_QR_CODE);

break;

default: break;

}

return true;

}


4,給控件添加邊框樣式

在drawable目錄添加border_style.xml文件

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android">

? ?<stroke android:width="1dp" android:color="#999999"/>

????<solid android:color="@android:color/transparent"/>

????<corners android:radius="2dp"></corners>

</shape>

在控件的布局屬性中加上android:background="@drawable/border_style"就可以啦淤齐。

5股囊,修改Spinner默認樣式

創(chuàng)建custom_spinner_item_layout.xml文件

<?xml version="1.0" encoding="utf-8"?>

<!--spinner展開后的Item布局-->

<TextView android:id="@+id/spinner_textView" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:padding="3dp" android:textSize="8pt" android:layout_margin="5dp" android:textColor="@color/colorSimpleBlack"></TextView>

activity中使用:

arrAdapter = new ArrayAdapter<String>(ScanFirstActivity.this, R.layout.custom_spinner_item_layout, storageDeptsList);storageDeptSpinner.setAdapter(arrAdapter);

6,TextView加下劃線效果

資源文件里:

<resources>

<string name="hello"><u>phone:0123456</u></string>

?</resources>?

代碼里:

TextView textView = (TextView)findViewById(R.id.tv_test); textView.setText(Html.fromHtml("<u>"+"0123456"+"</u>"));

或者

textView.getPaint().setFlags(Paint. UNDERLINE_TEXT_FLAG ); //下劃線? ? ? textView? .getPaint().setAntiAlias(true);//抗鋸齒?

7更啄,切換到中英文之后稚疹,頁面白板的問題

原因:文字過長,超出頁面锈死,導致整個頁面無法刷新出來贫堰。修改文字長度就可以。

8待牵,頁面整體滾動以及出現(xiàn)的問題

方法:在布局外面上加上ScrollView。使其適應父控件喇勋,即填滿屏幕缨该。當里面的內(nèi)容不超過一屏的時候,不可滾動川背;當內(nèi)容超過一屏的時候贰拿,可以滾動。

會出現(xiàn)的問題是:ScrollView can host only one direct child熄云。

原因:ScrollView 只能有一個直接子布局膨更。

解決方法:講多個子布局包裹在一個布局里面,再把這個布局作為ScrollView的子布局缴允。

9荚守,Dialog Unable to add window -- token null is not for an application錯誤的解決方法

AlertDialog dialog = new AlertDialog.Builder(context, R.style.Dialog).create();

參數(shù)context不能使用全局的application,必須使用當前activity的context练般。

10矗漾,Android自定義View之PopupLayout

歡迎使用自定義彈出框PopupLayout?

使用的時候,基于這個彈出框薄料,在上面布局:

自定義彈出框上布局文件

代碼里使用:

View view=View.inflate(LoginActivity.this,R.layout.popup_fill_host_layout,null);

popupLayout=PopupLayout.init(LoginActivity.this,view);

popupLayout.setUseRadius(true);popupLayout.setWidth(350,true);

popupLayout.setHeight(300,true);

popupLayout.show(PopupLayout.POSITION_CENTER);

//綁定控件

hostPortEdit = view.findViewById(R.id.hostPortEdit);

hostPortEdit.setText(PreferenceUtil.getPreference(getApplication(),"Host"));

hostFillConfirmBtn = view.findViewById(R.id.hostFillConfirmBtn);

hostFillGiveUpBtn = view.findViewById(R.id.hostFillGiveUpBtn);

hostFillConfirmBtn.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

String newHost = hostPortEdit.getText().toString();

if(!StringUtil.isBlank(newHost)){ PreferenceUtil.setPreference(getApplication(),"Host",newHost);}

Toast.makeText(getApplicationContext(), getResources().getString(R.string.save_success), Toast.LENGTH_SHORT).show(); popupLayout.dismiss();

}});

hostFillGiveUpBtn.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

????popupLayout.dismiss();

}});

11敞贡,獲取自定義view中的控件

View view=View.inflate(LoginActivity.this,R.layout.popup_fill_host_layout,null);

popupLayout=PopupLayout.init(LoginActivity.this,view);

popupLayout.setUseRadius(true);

popupLayout.setWidth(350,true);

popupLayout.setHeight(300,true);

popupLayout.show(PopupLayout.POSITION_CENTER);

//綁定控件

hostPortEdit = view.findViewById(R.id.hostPortEdit);


或者

PopUpDialog newDialog = new PopUpDialog(MsgReView.this, R.style.MyDialog); newDialog.setCanceledOnTouchOutside(true);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? View view = newDialog.getCustomView();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TextView text1 = (TextView)view.findViewById(R.id.textViewTotal);

12,集成二維碼掃描功能

歡迎使用:封裝與接入ZXing掃碼庫


碼字不易摄职,如果覺得有幫助誊役,一定要給我點贊喲~~

不然信不信我砸了你家燈,半夜偷親你 ( ̄ε  ̄) !!!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末谷市,一起剝皮案震驚了整個濱河市蛔垢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌歌懒,老刑警劉巖啦桌,帶你破解...
    沈念sama閱讀 221,430評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡甫男,警方通過查閱死者的電腦和手機且改,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來板驳,“玉大人又跛,你說我怎么就攤上這事∪糁危” “怎么了慨蓝?”我有些...
    開封第一講書人閱讀 167,834評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長端幼。 經(jīng)常有香客問我礼烈,道長,這世上最難降的妖魔是什么婆跑? 我笑而不...
    開封第一講書人閱讀 59,543評論 1 296
  • 正文 為了忘掉前任此熬,我火速辦了婚禮,結(jié)果婚禮上滑进,老公的妹妹穿的比我還像新娘犀忱。我一直安慰自己,他們只是感情好扶关,可當我...
    茶點故事閱讀 68,547評論 6 397
  • 文/花漫 我一把揭開白布阴汇。 她就那樣靜靜地躺著,像睡著了一般节槐。 火紅的嫁衣襯著肌膚如雪搀庶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,196評論 1 308
  • 那天疯淫,我揣著相機與錄音地来,去河邊找鬼。 笑死熙掺,一個胖子當著我的面吹牛未斑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播币绩,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼蜡秽,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了缆镣?” 一聲冷哼從身側(cè)響起芽突,我...
    開封第一講書人閱讀 39,671評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎董瞻,沒想到半個月后寞蚌,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體田巴,經(jīng)...
    沈念sama閱讀 46,221評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,303評論 3 340
  • 正文 我和宋清朗相戀三年挟秤,在試婚紗的時候發(fā)現(xiàn)自己被綠了壹哺。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,444評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡艘刚,死狀恐怖管宵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情攀甚,我是刑警寧澤箩朴,帶...
    沈念sama閱讀 36,134評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站秋度,受9級特大地震影響炸庞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜静陈,卻給世界環(huán)境...
    茶點故事閱讀 41,810評論 3 333
  • 文/蒙蒙 一燕雁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鲸拥,春花似錦、人聲如沸僧免。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽懂衩。三九已至撞叨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間浊洞,已是汗流浹背牵敷。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留法希,地道東北人枷餐。 一個月前我還...
    沈念sama閱讀 48,837評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像苫亦,于是被迫代替她去往敵國和親毛肋。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,455評論 2 359

推薦閱讀更多精彩內(nèi)容