Android에서 사용자 지정 단추가있는 사용자 지정 작업 모음을 구현하려면 어떻게해야합니까?
ActionBar
다음과 같은 사용자 지정을 구현하고 싶습니다.
그래서 질문 :
- 커스텀 뷰와 같은 버튼을 어떻게 구현할 수 있습니까?
- 상단에 선을 어떻게 그릴 수
ActionBar
있습니까? - 구분선없이 버튼을 구현하려면
ActionBar
어떻게해야합니까?
ActionBar
API 를 사용하려는 경우 얻을 수있는 것과 거의 비슷합니다 . ActionBar
이상한 Window
해킹을 하지 않고 색상 스트립을 위에 놓을 수 있을지 모르겠습니다 . MenuItems
간다 를 바꾸는 한 스타일을 통해 더 타이트하게 만들 수 있습니다. 이와 같은 것이지만 나는 그것을 테스트하지 않았습니다.
<style name="MyTheme" parent="android:Theme.Holo.Light">
<item name="actionButtonStyle">@style/MyActionButtonStyle</item>
</style>
<style name="MyActionButtonStyle" parent="Widget.ActionButton">
<item name="android:minWidth">28dip</item>
</style>
.NET Framework에 맞춤 레이아웃을 확장하고 추가하는 방법은 다음과 같습니다 ActionBar
.
// Inflate your custom layout
final ViewGroup actionBarLayout = (ViewGroup) getLayoutInflater().inflate(
R.layout.action_bar,
null);
// Set up your ActionBar
final ActionBar actionBar = getActionBar();
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setCustomView(actionBarLayout);
// You customization
final int actionBarColor = getResources().getColor(R.color.action_bar);
actionBar.setBackgroundDrawable(new ColorDrawable(actionBarColor));
final Button actionBarTitle = (Button) findViewById(R.id.action_bar_title);
actionBarTitle.setText("Index(2)");
final Button actionBarSent = (Button) findViewById(R.id.action_bar_sent);
actionBarSent.setText("Sent");
final Button actionBarStaff = (Button) findViewById(R.id.action_bar_staff);
actionBarStaff.setText("Staff");
final Button actionBarLocations = (Button) findViewById(R.id.action_bar_locations);
actionBarLocations.setText("HIPPA Locations");
사용자 정의 레이아웃은 다음과 같습니다.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:enabled="false"
android:orientation="horizontal"
android:paddingEnd="8dip" >
<Button
android:id="@+id/action_bar_title"
style="@style/ActionBarButtonWhite" />
<Button
android:id="@+id/action_bar_sent"
style="@style/ActionBarButtonOffWhite" />
<Button
android:id="@+id/action_bar_staff"
style="@style/ActionBarButtonOffWhite" />
<Button
android:id="@+id/action_bar_locations"
style="@style/ActionBarButtonOffWhite" />
</LinearLayout>
색상 스트립 레이아웃은 다음과 같습니다. 사용하려면 merge
에서 팽창하는 레이아웃에서 사용 하면됩니다 setContentView
.
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="@dimen/colorstrip"
android:background="@android:color/holo_blue_dark" />
Button
스타일 은 다음과 같습니다 .
<style name="ActionBarButton">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:background">@null</item>
<item name="android:ellipsize">end</item>
<item name="android:singleLine">true</item>
<item name="android:textSize">@dimen/text_size_small</item>
</style>
<style name="ActionBarButtonWhite" parent="@style/ActionBarButton">
<item name="android:textColor">@color/white</item>
</style>
<style name="ActionBarButtonOffWhite" parent="@style/ActionBarButton">
<item name="android:textColor">@color/off_white</item>
</style>
내가 사용한 색상과 치수는 다음과 같습니다.
<color name="action_bar">#ff0d0d0d</color>
<color name="white">#ffffffff</color>
<color name="off_white">#99ffffff</color>
<!-- Text sizes -->
<dimen name="text_size_small">14.0sp</dimen>
<dimen name="text_size_medium">16.0sp</dimen>
<!-- ActionBar color strip -->
<dimen name="colorstrip">5dp</dimen>
이보다 더 많이 사용자 정의하고 싶다면를 전혀 사용 ActionBar
하지 않는 것이 좋습니다.하지만 권장하지 않습니다. Android 디자인 가이드 라인 을 읽어보고 디자인 방법에 대한 더 나은 아이디어를 얻을 수도 있습니다.ActionBar.
당신이를 포기하기로 선택한 경우 ActionBar
대신 자신의 레이아웃을 사용, 당신은 행동 할 추가 확인해야 Toasts
사용자가 긴 당신의 "메뉴 아이템"을 누르면. 이것은 이 Gist를 사용하여 쉽게 달성 할 수 있습니다 .
1 드로어 블을 사용할 수 있습니다
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_item1"
android:icon="@drawable/my_item_drawable"
android:title="@string/menu_item1"
android:showAsAction="ifRoom" />
</menu>
2 작업 표시 줄의 스타일을 만들고 사용자 정의 배경을 사용합니다.
<resources>
<!-- the theme applied to the application or activity -->
<style name="CustomActivityTheme" parent="@android:style/Theme.Holo">
<item name="android:actionBarStyle">@style/MyActionBar</item>
<!-- other activity and action bar styles here -->
</style>
<!-- style for the action bar backgrounds -->
<style name="MyActionBar" parent="@android:style/Widget.Holo.ActionBar">
<item name="android:background">@drawable/background</item>
<item name="android:backgroundStacked">@drawable/background</item>
<item name="android:backgroundSplit">@drawable/split_background</item>
</style>
</resources>
3 스타일 다시 android : actionBarDivider
안드로이드 문서는 그에게 매우 유용합니다.
menu.xml 파일에 다음 코드를 작성하십시오.
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:my_menu_tutorial_app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.mymenus.menu_app.MainActivity">
<item android:id="@+id/item_one"
android:icon="@drawable/menu_icon"
android:orderInCategory="l01"
android:title="Item One"
my_menu_tutorial_app:showAsAction="always">
<!--sub-menu-->
<menu>
<item android:id="@+id/sub_one"
android:title="Sub-menu item one" />
<item android:id="@+id/sub_two"
android:title="Sub-menu item two" />
</menu>
또한 활동 클래스 파일에이 Java 코드를 작성하십시오.
public boolean onOptionsItemSelected(MenuItem item)
{
super.onOptionsItemSelected(item);
Toast.makeText(this, "Menus item selected: " +
item.getTitle(), Toast.LENGTH_SHORT).show();
switch (item.getItemId())
{
case R.id.sub_one:
isItemOneSelected = true;
supportInvalidateOptionsMenu();
return true;
case MENU_ITEM + 1:
isRemoveItem = true;
supportInvalidateOptionsMenu();
return true;
default:
return false;
}
}
이것은 작업 표시 줄에 메뉴를 표시하는 가장 쉬운 방법입니다.
'developer tip' 카테고리의 다른 글
jQuery를 사용하여 부모 요소를 삭제하는 방법 (0) | 2020.12.03 |
---|---|
하위 배열 값을 사용하여 알파벳순으로 PHP 정렬 배열 (0) | 2020.12.03 |
배포 인증서에 개인 키를 추가하려면 어떻게해야합니까? (0) | 2020.12.03 |
그리드 간격 변경 및 Matplotlib에서 눈금 레이블 지정 (0) | 2020.12.03 |
Windows.Web.Http.HttpClient 클래스를 사용한 PATCH 비동기 요청 (0) | 2020.12.03 |