2017-02-04 14 views
2

私はこれに苦労しています。この質問に対する直接の回答は一般的なキーワードのため、無関係な質問につながりません。プログラムで設定されたビューの高さまたは幅をリセットまたは設定解除する方法

私は、プログラムビューの高さや幅を設定した場合、例えば:

((Button) findViewById(R.id.myButtonId)).getLayoutParams().height = 100; 

どうやって解除/ビューの高さ(または幅)はその大きさの前にそのデフォルトの動作に戻りますように、このプロセスを元に戻す/リセットすることができます設定された?私は、インラインスタイルのためsome_dom_element.removeAttribute("style")

height: unsetまたはheight: initialHtml CSS同等、あるいはJavaScriptの道のようなものを見つけようとしています

は、これを実現するためには何がありますか?

+2

最初の高さを保存してから、終了時に元の高さに戻すのはなぜでしょうか? – nhouser9

+0

@ nhouser9ビューには動的なサイズ( 'match_parent'、' wrap_content'など)があります。最初のプロパティを保存するためにどちらを検出できるのでないかぎり、後で復元することはできません。これが可能かどうか、それをどうやって行うのか知っていますか?もしあなたがそうしていれば、私が成功すればテストし、承認する答えとして投稿することができれば幸いです。 – Shadow

+0

既に投稿したのと同じコードを使って高さを動的に取得することはできませんか? int oldHeight =((Button)findViewById(R.id.myButtonId))。getLayoutParams()。height; '? – nhouser9

答えて

2

この問題を解決するには、修正する前に高さを保存する必要があります。その後、元の高さに戻すことができます。幸いなことに、MATCH_PARENTWRAP_CONTENTという特殊なケースは整数定数として表現されているので、この場合でも(この点を調べるためにOPへのクレジット)は機能します。

ので、解決策は、このようなものです:

int initial_height = view.getLayoutParams().height; 

そして、あなたが戻って元の値に高さを設定したいときに、ちょうど正しくそうするinitial_heightを参照します。

1

nhouser9アイデアとドキュメントhttps://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html#MATCH_PARENTのおかげで、私はこの問題の解決策に取り組んできました。基本的なアイデアは同じですが、初期値を保存して後で元に戻すことができますが、最初にビューの高さや幅が固定値か動的値か、どの動的値かを調べる必要があります。 nhouser9提案は、これらの動的が直接働いたことを意味し、マニュアルに従って、以下の処理

int initial_height; 
switch (view.getLayoutParams().height) { 
    case LayoutParams.MATCH_PARENT: 
     initial_height = LayoutParams.MATCH_PARENT; 
     break; 
    case LayoutParams.WRAP_CONTENT: 
     initial_height = LayoutParams.WRAP_CONTENT; 
     break; 
    default: 
     initial_height = view.getLayoutParams().height; 
} 

を使用しかし、私は、動的サイズ(match_parentwrap_content)は、特定のそれぞれの値、-1および-2を持っていることがわかりますビューのサイズ(-1、-2または固定サイズの場合は正)から直接サイズを取得できます。これは、今のように、最初のサイズを直接保存するだけです。

int initial_height = view.getLayoutParams().height; 

これだけです。この回答は、同じソリューションを探している人を助けるためにここに残されています。他のユーザーが自分の答えを投稿するのを待っています。

関連する問題