Android學習筆記(八):Activity-OpenMenu和LinearLayout

來源:互聯網
上載者:User

設定文本顯示

繼承ViewText的widget有以下集中設定文本顯示的方式:一、在Android XML中 android:text="xxxxx"中設定;二、在程式中通過widget.setText("xxxx");三、在res/values/strings.xml中設定,然後通過R.string.xxx在Android或者在程式中使用。對於要適配多國語言,建議採用第三種方式,只需對stings.xml的相關詞彙進行翻譯即可。

OptionMenu

在手機上,有一個Menu按鈕,按下後,可以顯示OptionMenu,如下處理

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // TODO Auto-generated method stub
        //add(int groupId, int itemId, int order, int titleRes),對於exit的menuItem,0表示GroupId,1表示ItemId,這兩個Id將用於Menu按下後觸發回呼函數中用於判斷具體是哪個menuItem,第三個表示拜訪的順序,在這裡第一個是exit,第二個是about,第四個參數引向strings.xml中定義的內容。
        menu.add(0,1,1,R.string.menu_exit);
        menu.add(0,2,2,R.string.menu_about);
        return super.onCreateOptionsMenu(menu);
    }

建立的Menu後,需要觸發回呼函數,這也是一個override的方法,如下處理:

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // TODO Auto-generated method stub
        if(item.getItemId() == 1){ //在這個例子中我們只有一個group,所有只需檢查itemId就可以了。
            finish();
        }else if(item.getItemId() == 2){
            ... ...
        }
        return super.onOptionsItemSelected(item);
    }

LinearLayout

從上至下,或從左至右。是box model,基於方塊依次順序方式排列。RadioGroup是LinearLayout的繼承項

orientation

在Android XML中使用android:orientation,值為horizontal或者vertical,排版將是水平從左至右,或者豎直從上到下。在java程式中,我們可以通過setOrientation() 來改變方向,例如setOrientation(LinearLayout.HORIZONTAL);

fill model

一個widget根據其內容有一個最合適的大小,也就是natural大小,然則我們通才需要根據容器的大小進行排版,在LinearLayout中android:layout_width和android:layout_height是必須設定的,有三種方式:
1)指定尺寸,例如125px表示125pixels
2)wrap_content,這就是natual的尺寸
3)fill_parent:填滿容器剩餘的尺寸。

fill_parent將會使用剩餘所有的空間,哪怕是後面還有widget,也就將空間填滿。而我們並不希望如此,希望剩餘的widget仍然有效排列,而是希望將其他widget排列後的剩餘空間。我們將使用layout_weight的屬性。

weight

layout_weight和wrap_content共同使用,預設layout_weight為0,也就是size為natural size。(如果和fill_parent相結合,其結果無法預測,因此需特別注意)如果我們希望widget使用了剩餘的空間,那麼可以設定layout_weight一個有效值。這裡是權重,如果有多個widget,就按此權重來分配剩餘的空間。如果所有的layout_weight一樣,這些widget就對剩餘空間進行等分。有時我們會看到不一定很嚴格按照設定的權重比例來分配空間,必須能支援natural的大小,所以可能會有適配。

Gravity

線性布局從上到下,或這從左至右,可以使用gravity,提供align的方式,不按此順序。對於android:layout_width="wrap_content" ,android:layout_gravity可以設定為left, center_horizontal, righ。在JAVA代碼中,可以使用 setGravity(),例如setGravity(Gravity.LEFT); setGravity(Gravity.CENTER_HORIZONTAL);

需要注意的是在widget中也是有相應的屬性,android:gravity,這裡指的是widget中文字在widget中的排放位置,例如android:gravity="right"。

右圖是button結合weight和gravity的例子

  <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_weight="1"
      android:singleLine="false"
      android:text="test1"
      android:layout_gravity="left"
      />
  <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_weight="2"
      android:singleLine="false"
      android:text="test2/ncenter_horizontal"
      android:layout_gravity="center_horizontal"
      />
  <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_weight="1"
      android:singleLine="false"
      android:text="test3/nLine_2/nLine_3"
      android:layout_gravity="right"
      />

如果我們將第三個的android:layout_gravity="right"改為android:gravity="right",結果如:


Pad和Margin

預設地,各widget之間是緊密排列的,如果需要留邊,可以採用padding的方式,。在XML中使用android:padding,android:paddingLeft, android:paddingRight,android:paddingTop, 和android:paddingBottom。在Java code中可以使用setPadding() 來處理。例如android:paddingTop="30px"。

需要注意的是,如果設定背景android:background,那麼包括widget和padding的地區都是看不到背景的。也就是widget實際上包含了padding的尺寸。為了避免這種情況,我們可以使用margin來替代,例如android:layout_marginTop,例如android:layout_marginLeft="100px"

通俗地,padding可以理解為widget的內邊框,margin可以理解為外邊框。

相關連結:
我的Android開發相關文章

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.