Tôi muốn sử dụng một làn da tùy chỉnh cho Datepickers và Timepickers của tôi. Thay đổi nền trong XML không thực hiện thủ thuật (nó thay đổi nền cho tập hợp, không phải từng nút của nó). API ngắn gọn và không có gì về ngoại hình (http://developer.android.com/reference/android/widget/DatePicker.html). Có thể sử dụng da tùy chỉnh cho các nút của Datepickers và Timepickers không?Bạn sử dụng giao diện Datepicker và Timepicker tùy chỉnh như thế nào?
6
A
Trả lời
4
Thật không may, trình đánh số là một tiện ích nội bộ. Cần ghi đè các hình nền này. Và không có cách nào chính thức để làm điều đó.
<NumberPickerButton android:id="@+id/increment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/timepicker_up_btn" />
<EditText android:id="@+id/timepicker_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:singleLine="true"
style="?android:attr/textAppearanceLargeInverse"
android:textColor="@android:color/primary_text_light"
android:textSize="30sp"
android:background="@drawable/timepicker_input" />
<NumberPickerButton android:id="@+id/decrement"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/timepicker_down_btn" />
3
này là không an toàn, nhưng tôi tin rằng đó là để cách duy nhất để da một timepicker mà không cần sao chép toàn bộ lớp:
try { for (int i=0; i<2; i++)
{
((ViewGroup) ((ViewGroup) mTimePicker.getChildAt(0)).getChildAt(i)).getChildAt(0).setBackgroundResource(R.drawable.timepicker_up_btn);
((ViewGroup) ((ViewGroup) mTimePicker.getChildAt(0)).getChildAt(i)).getChildAt(1).setBackgroundResource(R.drawable.timepicker_input);
((ViewGroup) ((ViewGroup) mTimePicker.getChildAt(0)).getChildAt(i)).getChildAt(2).setBackgroundResource(R.drawable.timepicker_down_btn);
}
} catch (Throwable t) {/* obviously no the view may look like garbage */}
rõ ràng là bạn phải cung cấp các drawables được tham chiếu với ứng dụng của bạn
12
ok, bạn đang tìm kiếm chủ đề tùy chỉnh cho datepicker và chọn thời gian .. này sẽ cho phép bạn thay đổi chủ đề của nút ..
https://github.com/luminousman/DatePicker
và trong phong cách ICS
https://github.com/luminousman/android-datepicker
hy vọng điều này sẽ giúp bạn ....
0
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/DateTimePicker"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
android:padding="5dip" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:baselineAligned="true"
android:orientation="horizontal" >
<LinearLayout
android:id="@+id/month_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:gravity="center"
android:orientation="vertical" >
<Button
android:id="@+id/month_plus"
android:layout_width="40dp"
android:layout_height="28dp"
android:background="@drawable/image_button_up" />
<EditText
android:id="@+id/month_display"
android:layout_width="45dp"
android:layout_height="35dp"
android:background="@drawable/picker_middle"
android:focusable="false"
android:gravity="center"
android:singleLine="true"
android:textColor="#C0C0C0" >
</EditText>
<Button
android:id="@+id/month_minus"
android:layout_width="40dp"
android:layout_height="28dp"
android:background="@drawable/image_button_down" />
</LinearLayout>
<LinearLayout
android:id="@+id/date_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:gravity="center"
android:orientation="vertical" >
<Button
android:id="@+id/date_plus"
android:layout_width="40dp"
android:layout_height="28dp"
android:background="@drawable/image_button_up" />
<EditText
android:id="@+id/date_display"
android:layout_width="45dp"
android:layout_height="35dp"
android:background="@drawable/picker_middle"
android:gravity="center"
android:inputType="number"
android:singleLine="true"
android:textColor="#C0C0C0" />
<Button
android:id="@+id/date_minus"
android:layout_width="40dp"
android:layout_height="28dp"
android:background="@drawable/image_button_down" />
</LinearLayout>
<LinearLayout
android:id="@+id/year_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:gravity="center"
android:orientation="vertical" >
<Button
android:id="@+id/year_plus"
android:layout_width="40dp"
android:layout_height="28dp"
android:background="@drawable/image_button_up" />
<EditText
android:id="@+id/year_display"
android:layout_width="45dp"
android:layout_height="35dp"
android:background="@drawable/picker_middle"
android:gravity="center"
android:inputType="number"
android:singleLine="true"
android:textColor="#C0C0C0" />
<Button
android:id="@+id/year_minus"
android:layout_width="40dp"
android:layout_height="28dp"
android:background="@drawable/image_button_down" />
</LinearLayout>
<LinearLayout
android:id="@+id/hour_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="5dp"
android:layout_marginTop="5dp"
android:gravity="center"
android:orientation="vertical" >
<Button
android:id="@+id/hour_plus"
android:layout_width="40dp"
android:layout_height="28dp"
android:background="@drawable/image_button_up" />
<EditText
android:id="@+id/hour_display"
android:layout_width="45dp"
android:layout_height="35dp"
android:background="@drawable/picker_middle"
android:gravity="center"
android:inputType="number"
android:singleLine="true"
android:textColor="#C0C0C0" >
</EditText>
<Button
android:id="@+id/hour_minus"
android:layout_width="40dp"
android:layout_height="28dp"
android:background="@drawable/image_button_down" />
</LinearLayout>
<LinearLayout
android:id="@+id/min_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:gravity="center"
android:orientation="vertical" >
<Button
android:id="@+id/min_plus"
android:layout_width="40dp"
android:layout_height="28dp"
android:background="@drawable/image_button_up" />
<EditText
android:id="@+id/min_display"
android:layout_width="45dp"
android:layout_height="35dp"
android:background="@drawable/picker_middle"
android:gravity="center"
android:inputType="number"
android:singleLine="true"
android:textColor="#C0C0C0" />
<Button
android:id="@+id/min_minus"
android:layout_width="40dp"
android:layout_height="28dp"
android:background="@drawable/image_button_down" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>`enter code here`
2
package com.pointnormal;
import java.util.Calendar;
import android.content.Context;
import android.text.Editable;
import android.text.InputFilter;
import android.text.Spanned;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RelativeLayout;
public class DateTimePicker extends RelativeLayout
{
private int startYear = 1900;
private int endYear = 2100;
private View myPickerView;
private Button month_plus;
private EditText month_display;
private Button month_minus;
private Button date_plus;
private EditText date_display;
private Button date_minus;
private Button year_plus;
private EditText year_display;
private Button year_minus;
private Button hour_plus;
private EditText hour_display;
private Button hour_minus;
private Button min_plus;
private EditText min_display;
private Button min_minus;
private Calendar cal;
// Constructor start
public DateTimePicker(Context context)
{
this(context, null);
init(context);
}
public DateTimePicker(Context context, AttributeSet attrs)
{
this(context, attrs, 0);
}
public DateTimePicker(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
LayoutInflater inflator = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
myPickerView = inflator.inflate(R.layout.datetimepicker, null);
this.addView(myPickerView);
initializeReference();
}
private void init(Context mContext)
{
LayoutInflater inflator = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
myPickerView = inflator.inflate(R.layout.datetimepicker, null);
this.addView(myPickerView);
initializeReference();
}
private void initializeReference()
{
month_plus = (Button) myPickerView.findViewById(R.id.month_plus);
month_plus.setOnClickListener(month_plus_listener);
month_display = (EditText) myPickerView.findViewById(R.id.month_display);
month_minus = (Button) myPickerView.findViewById(R.id.month_minus);
month_minus.setOnClickListener(month_minus_listener);
date_plus = (Button) myPickerView.findViewById(R.id.date_plus);
date_plus.setOnClickListener(date_plus_listener);
date_display = (EditText) myPickerView.findViewById(R.id.date_display);
date_display.addTextChangedListener(date_watcher);
date_minus = (Button) myPickerView.findViewById(R.id.date_minus);
date_minus.setOnClickListener(date_minus_listener);
year_plus = (Button) myPickerView.findViewById(R.id.year_plus);
year_plus.setOnClickListener(year_plus_listener);
year_display = (EditText) myPickerView.findViewById(R.id.year_display);
year_display.setOnFocusChangeListener(mLostFocusYear);
year_display.addTextChangedListener(year_watcher);
year_minus = (Button) myPickerView.findViewById(R.id.year_minus);
year_minus.setOnClickListener(year_minus_listener);
hour_plus = (Button) myPickerView.findViewById(R.id.hour_plus);
hour_plus.setOnClickListener(hour_plus_listener);
hour_display = (EditText) myPickerView.findViewById(R.id.hour_display);
hour_display.addTextChangedListener(hour_watcher);
hour_minus = (Button) myPickerView.findViewById(R.id.hour_minus);
hour_minus.setOnClickListener(hour_minus_listener);
min_plus = (Button) myPickerView.findViewById(R.id.min_plus);
min_plus.setOnClickListener(min_plus_listener);
min_display = (EditText) myPickerView.findViewById(R.id.min_display);
min_display.addTextChangedListener(min_watcher);
min_minus = (Button) myPickerView.findViewById(R.id.min_minus);
min_minus.setOnClickListener(min_minus_listener);
initData();
initFilterNumericDigit();
}
public void initData()
{
cal = Calendar.getInstance();
month_display.setText(months[cal.get(Calendar.MONTH)]);
date_display.setText(String.valueOf(cal.get(Calendar.DAY_OF_MONTH)));
year_display.setText(String.valueOf(cal.get(Calendar.YEAR)));
hour_display.setText(String.valueOf(cal.get(Calendar.HOUR_OF_DAY)));
min_display.setText(String.valueOf(cal.get(Calendar.MINUTE)));
}
private void initFilterNumericDigit()
{
try {
date_display.setFilters(new InputFilter[] { new InputFilterMinMax(1, cal.getActualMaximum(Calendar.DAY_OF_MONTH)) });
InputFilter[] filterArray_year = new InputFilter[1];
filterArray_year[0] = new InputFilter.LengthFilter(4);
year_display.setFilters(filterArray_year);
hour_display.setFilters(new InputFilter[] { new InputFilterMinMax(0, 23) });
min_display.setFilters(new InputFilter[] { new InputFilterMinMax(0, 59) });
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void changeFilter()
{
try {
date_display.setFilters(new InputFilter[] { new InputFilterMinMax(1, cal.getActualMaximum(Calendar.DAY_OF_MONTH)) });
}
catch (Exception e)
{
date_display.setText("" + cal.get(Calendar.DAY_OF_MONTH));
e.printStackTrace();
}
}
public void setTimeChangedListener(TimeWatcher listener)
{
this.mTimeWatcher = listener;
}
public void removeTimeChangedListener()
{
this.mTimeWatcher = null;
}
View.OnClickListener hour_plus_listener = new View.OnClickListener()
{
@Override
public void onClick(View v)
{
hour_display.requestFocus();
try
{
cal.add(Calendar.HOUR_OF_DAY, 1);
sendToDisplay();
}
catch (Exception e)
{
Log.e("", e.toString());
}
}
};
View.OnClickListener hour_minus_listener = new View.OnClickListener()
{
@Override
public void onClick(View v)
{
hour_display.requestFocus();
try
{
cal.add(Calendar.HOUR_OF_DAY, -1);
sendToDisplay();
}
catch (Exception e)
{
Log.e("", e.toString());
}
}
};
View.OnClickListener min_plus_listener = new View.OnClickListener()
{
@Override
public void onClick(View v)
{
min_display.requestFocus();
try
{
cal.add(Calendar.MINUTE, 1);
sendToDisplay();
}
catch (Exception e)
{
e.printStackTrace();
}
}
};
View.OnClickListener min_minus_listener = new View.OnClickListener()
{
@Override
public void onClick(View v)
{
min_display.requestFocus();
try
{
cal.add(Calendar.MINUTE, -1);
sendToDisplay();
}
catch (Exception e)
{
e.printStackTrace();
}
}
};
String[] months = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug","Sep", "Oct", "Nov", "Dec" };
View.OnClickListener month_plus_listener = new View.OnClickListener()
{
@Override
public void onClick(View v)
{
try
{
cal.add(Calendar.MONTH, 1);
month_display.setText(months[cal.get(Calendar.MONTH)]);
year_display.setText(String.valueOf(cal.get(Calendar.YEAR)));
date_display.setText(String.valueOf(cal.get(Calendar.DAY_OF_MONTH)));
changeFilter();
sendToListener();
}
catch (Exception e)
{
Log.e("", e.toString());
}
}
};
View.OnClickListener month_minus_listener = new View.OnClickListener()
{
@Override
public void onClick(View v)
{
try
{
cal.add(Calendar.MONTH, -1);
month_display.setText(months[cal.get(Calendar.MONTH)]);
year_display.setText(String.valueOf(cal.get(Calendar.YEAR)));
date_display.setText(String.valueOf(cal.get(Calendar.DAY_OF_MONTH)));
changeFilter();
sendToListener();
}
catch (Exception e)
{
Log.e("", e.toString());
}
}
};
View.OnClickListener date_plus_listener = new View.OnClickListener()
{
@Override
public void onClick(View v)
{
try
{
date_display.requestFocus();
cal.add(Calendar.DAY_OF_MONTH, 1);
month_display.setText(months[cal.get(Calendar.MONTH)]);
year_display.setText(String.valueOf(cal.get(Calendar.YEAR)));
date_display.setText(String.valueOf(cal.get(Calendar.DAY_OF_MONTH)));
sendToListener();
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
View.OnClickListener date_minus_listener = new View.OnClickListener()
{
@Override
public void onClick(View v)
{
try {
date_display.requestFocus();
cal.add(Calendar.DAY_OF_MONTH, -1);
month_display.setText(months[cal.get(Calendar.MONTH)]);
year_display.setText(String.valueOf(cal.get(Calendar.YEAR)));
date_display.setText(String.valueOf(cal.get(Calendar.DAY_OF_MONTH)));
sendToListener();
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
View.OnClickListener year_plus_listener = new View.OnClickListener()
{
@Override
public void onClick(View v)
{
try {
year_display.requestFocus();
if (cal.get(Calendar.YEAR) >= endYear)
{
cal.set(Calendar.YEAR, startYear);
}
else
{
cal.add(Calendar.YEAR, +1);
}
month_display.setText(months[cal.get(Calendar.MONTH)]);
year_display.setText(String.valueOf(cal.get(Calendar.YEAR)));
date_display.setText(String.valueOf(cal.get(Calendar.DAY_OF_MONTH)));
changeFilter();
sendToListener();
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
View.OnClickListener year_minus_listener = new View.OnClickListener()
{
@Override
public void onClick(View v)
{
try {
year_display.requestFocus();
if (cal.get(Calendar.YEAR) <= startYear) {
cal.set(Calendar.YEAR, endYear);
}
else
{
cal.add(Calendar.YEAR, -1);
}
month_display.setText(months[cal.get(Calendar.MONTH)]);
year_display.setText(String.valueOf(cal.get(Calendar.YEAR)));
date_display.setText(String.valueOf(cal.get(Calendar.DAY_OF_MONTH)));
changeFilter();
sendToListener();
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
class InputFilterMinMax implements InputFilter
{
private int min, max;
public InputFilterMinMax(int min, int max)
{
this.min = min;
this.max = max;
}
public InputFilterMinMax(String min, String max)
{
this.min = Integer.parseInt(min);
this.max = Integer.parseInt(max);
}
@Override
public CharSequence filter(CharSequence source, int start, int end,Spanned dest, int dstart, int dend)
{
try {
int input = Integer.parseInt(dest.toString()+ source.toString());
if (isInRange(min, max, input))
{
return null;
}
}
catch (NumberFormatException nfe)
{
}
return "";
}
private boolean isInRange(int a, int b, int c)
{
return b > a ? c >= a && c <= b : c >= b && c <= a;
}
}
public void reset()
{
cal = Calendar.getInstance();
initFilterNumericDigit();
initData();
sendToDisplay();
}
synchronized private void sendToListener()
{
if (mTimeWatcher != null)
{
mTimeWatcher.onTimeChanged(cal.get(Calendar.HOUR_OF_DAY),
cal.get(Calendar.MINUTE), -1);
}
if (mDateWatcher != null)
{
mDateWatcher.onDateChanged(cal);
}
}
private void sendToDisplay()
{
hour_display.setText(String.valueOf(cal.get(Calendar.HOUR_OF_DAY)));
min_display.setText(String.valueOf(cal.get(Calendar.MINUTE)));
}
TimeWatcher mTimeWatcher = null;
public interface TimeWatcher
{
void onTimeChanged(int h, int m, int am_pm);
}
TextWatcher hour_watcher = new TextWatcher()
{
@Override
public void onTextChanged(CharSequence s, int start, int before,int count)
{
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,int after)
{
}
@Override
public void afterTextChanged(Editable s)
{
try
{
if (s.toString().length() > 0)
{
cal.set(Calendar.HOUR_OF_DAY,Integer.parseInt(s.toString()));
sendToListener();
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
};
TextWatcher min_watcher = new TextWatcher()
{
@Override
public void onTextChanged(CharSequence s, int start, int before,int count)
{
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,int after)
{
}
@Override
public void afterTextChanged(Editable s)
{
try
{
if (s.toString().length() > 0)
{
cal.set(Calendar.MINUTE, Integer.parseInt(s.toString()));
sendToListener();
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
};
public int getYear()
{
return Integer.parseInt(year_display.getText().toString());
}
public int getDay()
{
return Integer.parseInt(date_display.getText().toString());
}
public String getMonth()
{
return month_display.getText().toString();
}
public int getHour()
{
return Integer.parseInt(hour_display.getText().toString());
}
public int getMinute()
{
return Integer.parseInt(min_display.getText().toString());
}
public void setDateChangedListener(DateWatcher listener)
{
this.mDateWatcher = listener;
}
public void removeDateChangedListener()
{
this.mDateWatcher = null;
}
View.OnFocusChangeListener mLostFocusYear = new OnFocusChangeListener()
{
@Override
public void onFocusChange(View v, boolean hasFocus)
{
if (!hasFocus)
{
year_display.setText(String.valueOf(cal.get(Calendar.YEAR)));
}
}
};
TextWatcher date_watcher = new TextWatcher()
{
@Override
public void onTextChanged(CharSequence s, int start, int before,int count)
{
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,int after)
{
}
@Override
public void afterTextChanged(Editable s)
{
try
{
if (s.toString().length() > 0)
{
// Log.e("", "afterTextChanged : " + s.toString());
cal.set(Calendar.DAY_OF_MONTH,Integer.parseInt(s.toString()));
month_display.setText(months[cal.get(Calendar.MONTH)]);
sendToListener();
}
}
catch (NumberFormatException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (Exception e)
{
e.printStackTrace();
}
}
};
TextWatcher year_watcher = new TextWatcher()
{
@Override
public void onTextChanged(CharSequence s, int start, int before,int count)
{
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,int after)
{
}
@Override
public void afterTextChanged(Editable s)
{
try
{
if (s.toString().length() == 4)
{
int year = Integer.parseInt(s.toString());
if (year > endYear)
{
cal.set(Calendar.YEAR, endYear);
}
else if (year < startYear)
{
cal.set(Calendar.YEAR, startYear);
}
else
{
cal.set(Calendar.YEAR, year);
}
}
sendToListener();
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
DateWatcher mDateWatcher = null;
public interface DateWatcher
{
void onDateChanged(Calendar c);
}
}
public void button_click(View view)
{
// Create the dialog
final Dialog mDateTimeDialog = new Dialog(this);
// Inflate the root layout
final RelativeLayout mDateTimeDialogView = (RelativeLayout) getLayoutInflater().inflate(R.layout.date_time_dialog, null);
// Grab widget instance
final DateTimePicker mDateTimePicker = (DateTimePicker) mDateTimeDialogView.findViewById(R.id.DateTimePicker);
mDateTimePicker.setDateChangedListener(this);
// Update demo TextViews when the "OK" button is clicked
((Button) mDateTimeDialogView.findViewById(R.id.SetDateTime)).setOnClickListener(new OnClickListener() {
public void onClick(View v)
{
mDateTimePicker.clearFocus();
// TODO Auto-generated method stub
String result_string = mDateTimePicker.getMonth() + "/" + String.valueOf(mDateTimePicker.getDay()) + "/" + String.valueOf(mDateTimePicker.getYear())+ " " + String.valueOf(mDateTimePicker.getHour()) + ":" + String.valueOf(mDateTimePicker.getMinute());
// if(mDateTimePicker.getHour() > 12) result_string = result_string + "PM";
// else result_string = result_string + "AM";
//if(result_string<)
edit_text.setText(result_string);
mDateTimeDialog.dismiss();
}
});
// Cancel the dialog when the "Cancel" button is clicked
((Button) mDateTimeDialogView.findViewById(R.id.CancelDialog)).setOnClickListener(new OnClickListener() {
public void onClick(View v)
{
// TODO Auto-generated method stub
mDateTimeDialog.cancel();
}
});
// Reset Date and Time pickers when the "Reset" button is clicked
((Button) mDateTimeDialogView.findViewById(R.id.ResetDateTime)).setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
// TODO Auto-generated method stub
mDateTimePicker.reset();
}
});
// Setup TimePicker
// No title on the dialog window
mDateTimeDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
// Set the dialog content view
mDateTimeDialog.setContentView(mDateTimeDialogView);
// Display the dialog
mDateTimeDialog.show();
}
public void onDateChanged(Calendar c)
{
Log.e("","" + c.get(Calendar.MONTH) + " " + c.get(Calendar.DAY_OF_MONTH)+ " " + c.get(Calendar.YEAR));
}`enter code here`
Các vấn đề liên quan
- 1. Giao diện tập hợp tùy chỉnh Python
- 2. Android: sử dụng một datepicker và timepicker từ trong một Dialog
- 3. JTabbedPane tùy chỉnh giao diện tab
- 4. Giao diện người dùng LogParser nào bạn sử dụng?
- 5. Có thể tùy chỉnh giao diện và giao diện jqgrid không?
- 6. Tôi có thể sử dụng Catalyst và chuỗi uri bằng giao diện REST như thế nào?
- 7. Mục tiêu-C. Bạn có thể sử dụng giao thức như giao diện Java không?
- 8. Bạn có thể tạo UIBarButtonItem bằng Chế độ xem tùy chỉnh trong Bộ dựng giao diện
- 9. Cách sử dụng UIButton tùy chỉnh với Trình tạo giao diện?
- 10. Làm thế nào để tạo các hộp thoại datePicker và timePicker trong lớp phân đoạn?
- 11. Làm thế nào để tùy chỉnh giao diện NSTextField (Font được sử dụng, kích thước phông chữ) trong Cocoa?
- 12. Bạn sử dụng JSTL như thế nào?
- 13. Bạn sử dụng gdb như thế nào?
- 14. Tùy chỉnh UIView từ Trình tạo giao diện
- 15. Autofac. Làm thế nào để sử dụng phương thức tùy chỉnh (thuộc tính) để giải quyết một số giao diện?
- 16. Bắt nguồn từ UIC tạo lớp giao diện người dùng Qt từ giao diện tùy chỉnh
- 17. Tùy chỉnh giao diện của bàn phím iOS
- 18. Tùy chỉnh giao diện người dùng Mylyn Context?
- 19. giao diện giống như giao diện điều khiển trên trang web bằng cách sử dụng javascript
- 20. Làm thế nào để bạn sử dụng con trỏ chuột tùy chỉnh trong ứng dụng .NET?
- 21. Tạo thư viện giao diện người dùng Android có giao diện người dùng tùy chỉnh
- 22. .NET - Bạn có thể trên giao diện hay không và khi nào bạn không nên giao diện
- 23. Bạn sẽ thiết kế giao diện người dùng tìm kiếm tốt như thế nào?
- 24. Học cách viết giao diện người dùng iPhone tùy chỉnh
- 25. Bạn sử dụng các mẫu nào để tách giao diện và triển khai trong C++?
- 26. Làm thế nào để bạn xây dựng một Visual Studio như giao diện người dùng?
- 27. Điều khiển phân đoạn giao diện người dùng tùy chỉnh
- 28. tùy chỉnh giao diện của f.file.field trong đường ray
- 29. Tùy chỉnh giao diện của trình kiểm tra web Chrome
- 30. Giao diện PHP: Chúng có thể sử dụng được trong thực tế như thế nào?