androidいくつかの穴と小さなテクニック

7437 ワード

Androidのいくつかの穴
1、LinearLayoutのorientation&gravity
  • LinearLayoutレイアウトでorientation="vertical"プロパティを設定する場合:サブコンポーネントがlayout_を設定する場合gravity=”center_verticalは無効です.
  • LinearLayoutでgravity="center_を設定した場合vertical」は、サブアセンブリを垂直に中央に配置する役割を果たすことができます.水平レイアウト同理
  • 2、xmlリソースファイルで定義した配列を取得する
    getResources().getStringArray(R.array.city)
    3、リストにあるCheckBox(理解できない)

    4、レイアウトのListView|GridViewが焦点を占める
    ScrollviewにGridviewがネストされ、Gridviewがフォーカスを奪う問題(レイアウトを表示するときは常にGridviewの最初のitemから表示する)解決方法:inflate viewを取得した後、コードをGridViewに与える.setFocusable(false)でいいです
    5、Listviewを削除して背景が黒くなり、itemはデフォルトの背景をクリックする
    Listviewのデフォルトの背景はシステムウィンドウと同じように透明で、listviewに背景画像を付けたり、背景色を付けたりすると、スクロール時にlistviewが黒くなったりします.スクロール時、リスト内のviewの再描画は依然としてシステムのデフォルトの透明色で、色値は#FF 191919の解決策です.-listviewのsetCacheColorHint(0)を呼び出し、カラー値を0に設定-xmlファイルのlistViewのプロパティAndroid:cacheColorHint="#00000000"を設定します.スクロールすると、Viewを再描画するときにバックグラウンドカラーが表示されません.Android:listSelector="#00000000"で上記の設定を行った後、ListViewがitemをクリックしても何の現象もありません
    6、Androidシステムプログラム設定ページを開く
    Intent intent = new Intent();
    intent.setClassName("com.android.settings","com.android.settings.ManageApplications");
    intent.setAction("android.intent.action.MAIN");
    try {
        startActivity(intent);
    } catch (Exception e) {
        e.printStackTrace();
    }  

    7、EditTextによるレイアウトフォーカスの自動取得を禁止する
    解決策:EditTextの親コントロールでandroid:focusable="true"android:focusableInTouchMode="true"に設定
    8、RadioButton設定デフォルト選択
    RadioGroupでデフォルトで1つのRadioButtonが選択すると、選択時に2つの問題解決方法が選択する:RadioButtonのデフォルト選択を設定する必要がなく、RadioButtonを常に選択状態にする.ラディオ・ブットンをsetCheck(true); radioGroupに変更します.check(radioButton.getId());
    9、ImageView幅でスクリーンを埋め尽くすことを実現し、高度に適応する
    1、ImageViewをカスタマイズしてViewを書き換えるonMeasure方法
    public class ResizableImageView extends ImageView {  
    
        public ResizableImageView(Context context) {  
            super(context);  
        }  
    
        public ResizableImageView(Context context, AttributeSet attrs) {  
            super(context, attrs);  
        }  
    
        @Override  
        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){  
            Drawable d = getDrawable();  
    
            if(d!=null){  
                // ceil not round - avoid thin vertical gaps along the left/right edges  
                int width = MeasureSpec.getSize(widthMeasureSpec);  
                //                     
                int height = (int) Math.ceil((float) width * (float) d.getIntrinsicHeight() / (float) d.getIntrinsicWidth());  
                setMeasuredDimension(width, height);  
            }else{  
                super.onMeasure(widthMeasureSpec, heightMeasureSpec);  
            }  
        }  
    }  

    2、ImageViewの属性を設定する
    //      
    android:layout_width=”match_parent”
    android:scaleType=”fitXY”
    android:layout_height=”wrap_content”
    //    ,     
    android:adjustViewBounds=”true”

    10、テーマファイル設定の色
    http://blog.csdn.net/chengtaoyan/article/details/79401751 
    11、Android GridViewコンポーネントはどのように周囲の隙間を取り除くか
    GridViewのandroid:listSelectorプロパティandroid:listSelector="@null"を設定すると周囲の隙間がなくなります
    12、ListViewスクロールバーを隠す
    setScrollbarFadingEnabled(true); //非アクティブ時に非表示、アクティブ時に表示
    setVerticalScrollBarEnabled(true); //活動しない時は隠し、活動する時も隠す
    13、android:parentActivityName
    ActivityはmanifetでAndroid:parentActivity Nameを宣言した.このときActivityの左上隅の戻りボタンをクリックして戻り、宣言した親Activityを起動し、常に親ActivityのOnDestroyメソッドを呼び出し、サブActivityの左上隅の戻りボタンをクリックすると、呼び出しロジックは次のようになります:MainActivity.onDestroy(); MainActivity.onCreate(null); MainActivity.onStart(); 解決策は、MainActivityプロパティを設定するandroid:launchMode=singleTop
    ちなみにandroid:parentActivity Nameの役割は、左上にサブActivityに戻るボタンを付けるためです.具体的な情報は、Android 4.1のパフォーマンス向上、ユーザー体験の強化Appスタックナビゲーション:android:parentActivity Nameを設定することで、ロールバックスタックの内容を変更し、スタックにparentActivityがない場合は、スタックを合成します.onPrepareNavigateUpTaskStack()でparentActivityの内容を変更します.
    14、ScrollView表示不全
    ScrollViewにLinearLayoutがネストされている場合、表示が不完全な場合があります.この場合、ScrollViewの親レイアウトがCoordinatorLayoutを使用しているかどうかを確認する必要があります.外部でCoordinatorLayoutを使用する場合は、内部でNestedScrollViewを使用する必要があります.そうしないと、不確定なバグが発生します.同様にCoordinatorLayout内部でViewPager&TabLayoutを使用して異なるFragmentを表示する場合、Fragment内でScrollViewを使用すると表示不全になることもあります.
    15、OOMメモリオーバーフロー
    アプリケーションをテストするとき、一部のモデルで正常に動作し、一部のモデルでOOMが表示された場合、アプリケーションの再最適化に加えて、プロファイルに次のことを追加できます.
    16、Toolbar左側に空白(内マージン)がある
    原因:V 7パッケージの下でWiget.AppCompat.ToolbarのparentでcontentInsetStart(デフォルト値)という属性がカスタムActionBarが完全に埋め込まれない原因です.
      

    次に、AppStyleでToolbarのプロパティを書き換えます.
    "toolbarStyle">@style/ClubToolbar  

    17、ListView、RecyclerView、ScorllView、Viewpagerなど、上部の半円形の張りをキャンセル
    android:overScrollMode=”never”
    18、.9画像
    左と上の黒いエッジは、ストレッチ領域を表します.右と下の黒いエッジは塗りつぶし領域を表します