package nliveroid.nlr.main; import android.content.Context; import android.preference.DialogPreference; import android.util.AttributeSet; import android.util.Log; import android.view.Gravity; import android.view.View; import android.widget.LinearLayout; import android.widget.ScrollView; import android.widget.TableLayout; import android.widget.TableRow; import android.widget.TextView; //TableHeightというかRowHeight public class TableHeightDialog extends DialogPreference{ private NumberPickable np; private TextView tv; private int defaultNum; private String key; private Context context; //こっちが呼ばれている public TableHeightDialog(Context context, AttributeSet attrs) { super(context, attrs); this.context = context; //属性は最初を1と考えてタグに記載した順序 //getAttributeValue(null,"key")としても何故か返ってこない key = attrs.getAttributeValue(2); } //こっちは呼ばれてない public TableHeightDialog(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); this.context = context; key = attrs.getAttributeName(2); } @Override protected View onCreateDialogView() { super.onCreateDialogView(); // Log.d("Log"," ON CREATE DIALOG VIEW -----------" + key); defaultNum = 0; ScrollView sv = new ScrollView(context); if(key.equals("init_comment_count")){//初期コメ取得件数 try{ defaultNum = Integer.parseInt(Details.getPref().getDetailMapValue(key)); }catch(NumberFormatException e){ defaultNum = 20; e.printStackTrace(); TextView tv = new TextView(context); tv.setText("設定値の初期化に失敗"); sv.addView(tv,-1,-1); return sv; } TableLayout tl = new TableLayout(context); tl.setColumnStretchable(0, true); TableRow tr0 = new TableRow(context); np = new NumberPicker_dev10(context); np.setRange(0, 1000); np.setCurrent(defaultNum); tr0.addView((View) np); tl.addView(tr0,new LinearLayout.LayoutParams(-1,-2)); sv.addView(tl,-1,-1); }else if(key.equals("cellheight_test")){//高さ調整 try{ defaultNum = Integer.parseInt(Details.getPref().getDetailMapValue(key)); }catch(Exception e){ defaultNum = 3; } np = new NumberPicker(context); np.setRange(1, 5); np.setCurrent(defaultNum); np.setClickable(true); np.setLongClickable(true); tv = new TextView(context); tv.setGravity(Gravity.CENTER); tv.setText("文字切れする場合に、高さの比率を調整します"); TableLayout tl = new TableLayout(context); tl.setColumnStretchable(0, true); TableRow tr0 = new TableRow(context); TableRow tr1 = new TableRow(context); tr0.addView(tv); tr1.addView((View) np); tl.addView(tr0,new LinearLayout.LayoutParams(-1,-2)); tl.addView(tr1,new LinearLayout.LayoutParams(-1,-2)); sv.addView(tl,-1,-1); }else{//テーブル高さ設定 try{ //起こらない事想定、ここが通らないとこのアプリは使い物にならない defaultNum = Integer.parseInt(Details.getPref().getDetailMapValue(key)); }catch(Exception e){ defaultNum = 6; } np = new NumberPicker(context); np.setRange(0, 10); np.setCurrent(defaultNum); np.setClickable(true); np.setLongClickable(true); tv = new TextView(context); tv.setGravity(Gravity.CENTER); tv.setText("行の高さを0~10の範囲で入力"); TableLayout tl = new TableLayout(context); tl.setColumnStretchable(0, true); TableRow tr0 = new TableRow(context); TableRow tr1 = new TableRow(context); tr0.addView(tv); tr1.addView((View) np); tl.addView(tr0,new LinearLayout.LayoutParams(-1,-2)); tl.addView(tr1,new LinearLayout.LayoutParams(-1,-2)); sv.addView(tl,-1,-1); } return sv; } @Override protected void onDialogClosed(boolean positiveResult) { super.onDialogClosed(positiveResult); if(positiveResult){ Details.getPref().setPreferenceKeyValue(key, np.getCurrent()); } } }